宾果检查(0007)

2023-12-22 17:08:28

题意

输入5*5个元素,如果有5个”x“连成一条线,就返回"True",否则返回”False“

输入

37 16 84 51 33
64 12 47 32 90
x x x x x
67 19 98 39 44
21 75 24 30 52

输出

True

代码

#include<bits/stdc++.h>

using namespace std;

const int N=10;

string lst[N][N];
int row[N],col[N],a,b;

bool check()
{
	for(int i=1;i<=5;i++)
	{
		for(int j=1;j<=5;j++)
		{
			if(lst[i][j]=="x")
			{
				row[i]++;
				col[j]++;
				if(i==j)	a++;
				if(i+j==6)	b++;
			}
		}
	}
	
	for(int i=1;i<=5;i++)
	{
		if(row[i]==5||col[i]==5)	return true;
	}
	if(a==5||b==5)	return true;
	
	return false;
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	for(int i=1;i<=5;i++)
	{
		for(int j=1;j<=5;j++)
		{
			cin>>lst[i][j];
		}
	}
	
	bool res=check();
	string ans=res?"True":"False";
	cout<<ans<<endl;
	
	return 0;
}

总结

1.不太会用vector,用正常的数组可以代替

2.a表示的是从左上到右下的对角线,b表示的是从左下到右上的对角线

希望程设能过

3.有时候自己分不清楚具体数字的时候,不妨从1开始存,或者举一个特例来帮助确定式子

从左下到右上的对角线的公式的确定

4.全局变量的话,函数可以直接调用,比较方便,比如说这里的

string lst[][],row[],col[],a,b;
//怎么没有高亮呢(恼

文章来源:https://blog.csdn.net/L3102250566/article/details/135154998
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。