陶片检查

题目描述:
小傲参加了学校文物修复小组,老师为考验同学们的细心程度,安排大家对碎陶片进行填色。陶片均可视为一个矩形,同学们可将陶片划分为一个n行n列的矩阵,每个矩阵元素都可被填充为红色R或蓝色B,但要求这个矩阵的每行每列中红色的数量都为偶数,或者仅改变一个矩阵元素的填色就能符合上述要求也是可以的,"改变矩阵元素"的操作定义为R变成B或者B变成R。因为同学们过于热情,提交了大量的陶片,老师一人无法完成检查,请你通过程序编写帮助老师完成陶片检查。

输入格式:
输入n+1行,第一行为矩阵的大小n (0 < n < 100),以下n行为矩阵每一行中的元素,元素之间以一个空格隔开。

输出格式:
如果矩阵符合条件,则输出OK;如果矩阵仅改变一个矩阵元素就能符合条件,则输出需要改变的元素所在的行号和列号,以一个空格分开。如果不符合以上两条,输出Corrupt。

#include<iostream>
#include<cstdio>
using namespace std;


#define N 100//你们懂我意思吧?不然下面还要打多少个100,定义一个标识符(N)来表示一个常量(100)

int main(){
	
    int n;
    char ar[N][N]={0};//二维数组用来存放输入内容
    int row_num[N]={0},row_cnt=0,row=0;//(横排)row_num[N]存放“R”的个数,row_cnt存放错误个数,row存放横排数字(横着数第几个)
    int col_num[N]={0},col_cnt=0,col=0;//(竖排)同上
    cin>>n;//输入矩阵大小
    for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		cin>>ar[i][j];//输入矩阵
    		if(ar[i][j]=='R')//若等于‘R’
    		{
    			row_num[i]++;//则数量自增
			}
		}
	}
	
	for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{
    		if(ar[j][i]=='R')
    		{
    			col_num[i]++;//同上(竖排)
			}
		}
	}
	
    for(int i=0;i<n;i++)
    {
    	if(row_num[i]%2==1)//若‘R’的个数是奇数
    	{
    		row_cnt++;//则错误数自增
    		row=i;//将i存入横排中
		}
		
		if(col_num[i]%2==1)
    	{
    		col_cnt++;
    		col=i;//同上(竖排)
		}
	}
    
    if(row_cnt==0&&col_cnt==0)
    {
    	cout<<"OK";//如果错误数为0,则OK
	}
	else if(row_cnt==1&&col_cnt==1)
	{
		cout<<row+1<<" "<<col+1;//若错误数为1,则输出横排竖排坐标(+1是因为字符串下标由0开始)
	}
	else
	{
		cout<<"Corrupt";//若错误数大于2,则输出不行
	}
	
    return 0;
}

是不是很棒呢

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值