题目链接:http://codeforces.com/contest/1207/problem/B
思路:因为题目不需要找最少次数,直接枚举x,y。符合条件直接改变。
#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
int A[55][55],B[55][55];
vector<pair<int,int>> ve;
void init()
{
sum=0;
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
scanf("%d",&A[i][j]);
if(A[i][j]==1)
sum++;
B[i][j]=A[i][j];
}
}
}
void solve()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(A[i][j]==1&&A[i+1][j]==1&&A[i][j+1]==1&&A[i+1][j+1]==1)
{
B[i][j]=0,B[i+1][j]=0,B[i][j+1]=0,B[i+1][j+1]=0;
ve.push_back(make_pair(i,j));
}
}
}
}
void out()
{
int flag=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(B[i][j]==1) flag=0;
if(flag==0)
{
printf("-1\n") ;
return ;
}
int lenv=ve.size();
printf("%d\n",lenv);
for(int i=0;i<lenv;i++)
{
printf("%d %d\n",ve[i].first,ve[i].second);
}
}
int main()
{
init();
solve();
out();
}