符合条件则继续判断下一条件,否则跳入下一个循环检验下一组数据
#include <iostream>
#include <stdlib.h>
using namespace std;
//C 不是第一名,D 比 E 低二个名次,而 E 不是第二名,A即不是第一名,也不是最后一名,B 比 C 低一个名次
//E:1,D:3,A:2,C:4,B:5
//2 5 4 3 1
int main() {
int arr[5] = { 0 };//arrBCDE的名次分别存在arr[0]-arr[4]中
//全部遍历
for (int a = 1; a < 5; a++) {
arr[0] = a;
for (int b = 1; b <= 5; b++) {
arr[1] = b;
for (int c = 1; c <= 5; c++) {
arr[2] = c;
for (int d = 1; d <= 5; d++) {
arr[3] = d;
for (int e = 1; e <= 5; e++) {
arr[4] = e;
if (c != 1); else continue;
if (d == e + 2); else continue;
if (e != 2); else continue;
if (a != 1 && a != 5); else continue;
if (b == c + 1); else continue;
if (a * b * c * d * e == 120); else continue;//保证名次不会重复
printf("ABCDE名次依次为:");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
system("pause");
return 0;
}
}
}
}
}
}
如果发现更好的遍历方法欢迎留言与我交流!如果我发现更好的方法也会再贴上来!