修改文件结构。
This commit is contained in:
42
POP/06/Optional05.c
Normal file
42
POP/06/Optional05.c
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int digits[5][2];
|
||||
int best1 = 100000, best2 = 10000;
|
||||
|
||||
void pickNext(int layer, int goal, int alreadyPicked,int* best) {
|
||||
int i = 0;
|
||||
if (layer == 6) {
|
||||
if (abs(alreadyPicked - goal) < abs(*best - goal)) {
|
||||
*best = alreadyPicked;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (;i < 5; i++) {
|
||||
if (digits[i][1] == 0) {
|
||||
digits[i][1] = 1;
|
||||
pickNext(layer + 1, goal, alreadyPicked * 10 + digits[i][0], best);
|
||||
digits[i][1] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int input, i;
|
||||
scanf("%d", &input);
|
||||
if (input < 10000 || input > 99999) {
|
||||
printf("Not a 5-digit number!");
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
for (i = 4; i >= 0; i--) {
|
||||
digits[i][0] = input % 10;
|
||||
input /= 10;
|
||||
}
|
||||
pickNext(1, 40000, 0, &best1);
|
||||
pickNext(1, 60000, 0, &best2);
|
||||
printf("%d %d", best1, best2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user