69,382
社区成员
发帖
与我相关
我的任务
分享
void main() {
int[] num = {0, 1, 2, 3, 4, 5, 6, 7};
int[] idx = {0, 0, 0, 0, 0, 0, 0, 0};
int count = 0, exist = 0;
for (idx[0]=1; idx[0]<8; idx[0]++) { //首位不为0
for (idx[7] = 1; idx[7]<8; idx[7]+=2) { //个位不为偶数
if (idx[7] == idx[0]) continue;
while (true) { //中间位不重复
for (int i=6; i>1; i--) {
if (idx[i] >= 8) {
idx[i] = 0;
idx[i-1]++;
}
}
if (idx[1] >= 8) {
for (int i=1; i<7; i++) {
idx[i] = 0;
}
break;
}
exist = 0;
for (int i=1; i<7; i++) {
if (idx[i] == idx[0] || idx[i] == idx[7]) {
exist = 1;
break;
}
for (int j=i+1; j<7; j++) {
if (idx[i] == idx[j]) {
exist = 1;
break;
}
}
if (exist == 1) break;
}
if (exist == 0) {
int n = idx[0];
for (int i=1; i<7; i++) {
n = 10*n + num[idx[i]];
}
n = 10*n + num[idx[7]];
printf("%d\n", n);
count++;
}
idx[6]++;
}
}
}
printf("%d\n", count); //
}