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;

}

你可能感兴趣的:(poj)