标签:
有 一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都 会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状 态;其他的按钮改变5盏灯的状态。
2 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0
PUZZLE #1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 PUZZLE #2 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1
1 //程序实现 2 #include<iostream> 3 using namespace std; 4 int puzzle[6][8], press[6][8];//puzzle数组表示灯的亮灭状态,1表示亮,0表示灭 5 //press数组表示:“是否需要点亮或熄灭指定位置的灯”,1表示是,0表示否 6 bool guess();//声明guess函数 7 void enumeration();//声明enumeration函数 8 int main() { 9 int n; 10 cin >> n; 11 if (n == 0) 12 cout << "error!" << endl; 13 //该段程序可有可无 14 /* for (int i = 0; i < 6; i++) 15 { 16 press[i][0] = 0; 17 press[i][7] = 0; 18 puzzle[i][0] = 0; 19 } 20 for (int i = 0; i < 8; i++) 21 { 22 press[0][i] = 0; 23 puzzle[0][i] = 0; 24 }*/ 25 for (int i = 0; i < n; i++) 26 { 27 for (int r = 1; r < 6; r++) 28 for (int c = 1; c < 7; c++) 29 { 30 cin >> puzzle[r][c]; 31 } 32 33 //调用函数 34 enumeration(); 35 cout << "PUZZLE#" << i+1 << endl; 36 for (int r = 1; r < 6; r++) 37 { 38 for (int c = 1; c < 7; c++) 39 { 40 cout << press[r][c] << " "; 41 } 42 cout << endl; 43 } 44 } 45 } 46 //判断函数 47 bool guess() 48 { 49 for (int r = 1; r < 5; r++) 50 for (int c = 1; c < 7; c++) 51 press[r + 1][c] = (puzzle[r][c] + press[r][c] + 52 press[r][c + 1] + press[r][c - 1] + press[r - 1][c]) % 2; 53 54 for (int c = 1; c < 7; c++) 55 if (puzzle[5][c] != (press[5][c] + press[5][c + 1] + 56 press[5][c - 1] + press[4][c]) % 2) 57 { 58 return false; 59 } 60 61 return true; 62 } 63 //枚举函数 64 void enumeration() 65 { 66 int c; 67 for ( c = 0; c < c; c++) 68 { 69 press[1][c] = 0; 70 } 71 while (guess() == false) 72 { 73 press[1][1]++; 74 c = 1; 75 while (press[1][c]>1) 76 { 77 press[1][c] = 0; 78 c++; 79 press[1][c]++; 80 } 81 } 82 }
标签:
原文地址:http://www.cnblogs.com/tygao/p/5168622.html