Poj2965,翻转行与列

-+--
----
----
-+--

翻一个位置必须翻转所在行与列的其它所有棋子

要翻转一个位置而不改变其它位置的方法:该位置所在的行与列的总共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;
}
posted on 2011-06-05 19:47  yangyh  阅读(279)  评论(0编辑  收藏  举报