51nod 1316 回文矩阵

#include 
using namespace std;

char mz[10][10],tmpmz[10][10];

int cal1(int x)
{
	int ret=0;
	while(x)
	{
		if(x&1)
			ret++;
		x>>=1;
	}
	return ret;
}

int main()
{
	int i,j,n,m,rowsum,colsum,rsta,csta,now,ans,flag,sum;
	while(cin>>rowsum>>colsum>>n)
	{
		for(i=0;i=2)
						{
							sum=tmpmz[i][j]+tmpmz[i][m-j-1]+tmpmz[n-i-1][j]+tmpmz[n-i-1][m-j-1]-'0'*4;
							if(sum>=2)
							{
								tmpmz[i][j]='1';
								tmpmz[i][m-j-1]='1';
								tmpmz[n-i-1][j]='1';
								tmpmz[n-i-1][m-j-1]='1';
								now+=4-sum;
							}
							else
							{
								tmpmz[i][j]='0';
								tmpmz[i][m-j-1]='0';
								tmpmz[n-i-1][j]='0';
								tmpmz[n-i-1][m-j-1]='0';
								now+=sum;
							}
						}
						else
						{
							if(csta&(1<=2)
								{
									tmpmz[i][j]='1';
									tmpmz[i][m-j-1]='1';
									tmpmz[n-i-1][j]='1';
									now+=3-sum;
								}
								else
								{
									tmpmz[i][j]='0';
									tmpmz[i][m-j-1]='0';
									tmpmz[n-i-1][j]='0';
									now+=sum;
								}
							}
							else if(csta&(1<<(m-j-1)))
							{
								sum=tmpmz[i][j]+tmpmz[i][m-j-1]+tmpmz[n-i-1][m-j-1]-'0'*3;
								if(sum>=2)
								{
									tmpmz[i][j]='1';
									tmpmz[i][m-j-1]='1';
									tmpmz[n-i-1][m-j-1]='1';
									now+=3-sum;
								}
								else
								{
									tmpmz[i][j]='0';
									tmpmz[i][m-j-1]='0';
									tmpmz[n-i-1][m-j-1]='0';
									now+=sum;
								}
							}
							else
							{
								sum=tmpmz[i][j]+tmpmz[i][m-j-1]-2*'0';
								now+=min(sum,2-sum);
								tmpmz[i][j]=tmpmz[i][m-j-1];
							}
						}
					}
				}
				for(j=0;j

你可能感兴趣的:(----51nod)