POJ 1166拨钟问题
样例输入
3 3 0
2 2 2
2 1 2
样例输出
4 5 8 9
- 思路1:
迭代,9重循环,枚举出所有的组合 - code1:
#include <iostream>
using namespace std;
int clocks[3][3];
int main(){
int a[10], clocks[10];
for(int i = 1; i < 10; ++i){
cin >> clocks[i];
}
for(a[1] = 0; a[1] < 4; ++a[1]){
for( a[2] = 0; a[2] < 4; ++a[2]){
for( a[3] = 0; a[3] < 4; ++a[3]){
for( a[4] = 0; a[4] < 4; ++a[4]){
for( a[5] = 0; a[5] < 4; ++a[5]){
for( a[6] = 0; a[6] < 4; ++a[6]){
for( a[7] = 0; a[7] < 4; ++a[7]){
for( a[8] = 0; a[8] < 4; ++a[8]){
for( a[9] = 0; a[9] < 4; ++a[9]){
int sum = 0;
sum += (clocks[1]+a[1]+a[2]+a[4])%4;
sum += (clocks[2]+a[1]+a[2]+a[3]+a[5])%4;
sum += (clocks[3]+a[2]+a[3]+a[6])%4;
sum += (clocks[4]+a[1]+a[4]+a[5]+a[7])%4;
sum += (clocks[5]+a[1]+a[3]+a[5]+a[7]+a[9])%4;
sum += (clocks[6]+a[3]+a[5]+a[6]+a[9])%4;
sum += (clocks[7]+a[4]+a[7]+a[8])%4;
sum += (clocks[8]+a[5]+a[7]+a[8]+a[9])%4;
sum += (clocks[9]+a[6]+a[8]+a[9])%4;
if(sum == 0){
for(int i = 1; i <= 9; ++i){
while(a[i]--){
cout << i << " ";
}
}
return 0;
}
}
}
}
}
}
}
}
}
}
}
- 英文版: