Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 2 KB
#include <stdio.h>
#define IFile "new08i.txt"
#define OFile "new08o.txt"
#define MaxN 100
#define MaxK 6
int N, K;
int A[MaxK + 1];
int V[MaxN][2];
int Load (void);
void Init (void);
int Step (void);
void Search (int);
inline int sqr (int A) {return A*A;}
int main (void) {
printf("<-- Start -->\n");
if (!Load())
return 1;
Init();
do
Search(0);
while (Step());
Search(1);
return 0;
}
int Load (void) {
FILE * IN;
IN = fopen(IFile, "rt");
if (IN == NULL)
return 0;
fscanf(IN, "%d %d", &N, &K);
for (int I = 0; I < N; I++)
fscanf(IN, "%d %d", &V[I][0], &V[I][1]);
fclose(IN);
return 1;
}
void Init (void) {
for (int I = 0; I < K; I++)
A[I] = I;
A[I] = N + 1;
}
int Step (void) {
int I;
for (I = 0; I < K; I++)
if (A[I + 1] > A[I] + 1) {
A[I]++;
if (A[I] == N)
return 0;
break;
} else
A[I] = I;
return 1;
}
void Search (int bSave) {
static int B[MaxK];
static long Min;
static int bFound = 0;
int SumV[2] = {0, 0}, I, J, Sign;
long Max, D;
if (bSave) {
FILE * OUT = fopen(OFile, "wt");
if (OUT == NULL)
return;
if (!bFound)
fprintf(OUT, "NINCS MEGOLDÁS");
else {
for (int I = 0; I < K; I++) {
if (I > 0)
fprintf(OUT, "+");
fprintf(OUT, "(%d;%d)", V[B[I]][0], V[B[I]][1]);
}
}
fclose(OUT);
return;
}
for (I = 0; I < K; I++) {
SumV[0]+= V[A[I]][0];
SumV[1]+= V[A[I]][1];
}
if (SumV[0] || SumV[1])
return;
Max = 0;
for (I = 0; I < K; I++)
for (J = I + 1; J < K; J++) {
D = sqr(V[A[I]][0] - V[A[J]][0]) + sqr(V[A[I]][1] - V[A[J]][1]);
if (D > Max)
Max = D;
}
if (!bFound || Max < Min)
Min = Max;
for (I = 0; I < K; I++)
B[I] = A[I];
bFound = 1;
}