-+-- ---- ---- -+--
翻一个位置必须翻转所在行与列的其它所有棋子
要翻转一个位置而不改变其它位置的方法:该位置所在的行与列的总共7个翻面,知道此方法后这题就可以不用做了
网上代码特别多:
#include <iostream> using namespace std; const int ROW = 4; int main() { //freopen("d:/t.txt","r",stdin); bool HANDLES[ROW][ROW] = {false}; char handle; int i; for( i = 0; i < ROW; ++i) { for(int j = 0; j < ROW; ++j) { cin >> handle; if(handle == '+') { HANDLES[i][j] = !HANDLES[i][j]; for(int k = 0; k < ROW; ++k) { HANDLES[i][k] = !HANDLES[i][k]; HANDLES[k][j] = !HANDLES[k][j]; } } } } int result = 0; for( i = 0; i < ROW; ++i) { for(int j = 0; j < ROW; ++j) { if(HANDLES[i][j]) { ++result; } } } cout << result << endl; for( i = 0; i < ROW; ++i) { for(int j = 0; j < ROW; ++j) { if(HANDLES[i][j]) { cout << i + 1 << " " << j + 1 << endl; } } } return 0; }