西南民族大学第十届校赛(同步赛)(K题——正方体)

版权声明:本人原创,转载请注明出处! https://blog.csdn.net/qq_29117927/article/details/85542532

题目描述
已知一个正方体,每个面上都有任意一个数(假设每一面的面积足够大来装下当前面上的数字),现被展开成了如下形式:
在这里插入图片描述
输入中保证第一行有一个面,第二行有四个面,第三行有一个面。请用代码检查这个正方体对立面上的数是否相同。

输入描述:
输入包含多个测试样例。第一行为一个整数T(1 <= T <= 1e4),接下来每个样例占3行,每行都包括4个数,为0表明当前位置不表示面,每个面上的数值范围不超过int。
Eg:上图的输入为:
0 1 0 0
2 4 2 4
0 0 1 0

输出描述:
对于每个测试样例,如果当前正方体的三个对立面的数都分别相同的话就输出”Yes!”,否则输出”No!”。每个结果占一行,注意每50个结果要加一个空行。

输入
3
0 2 0 0
1 3 1 3
0 2 0 0
0 2 0 0
1 3 1 3
0 0 0 2
0 0 0 2
1 2 2 1
0 0 1 0

输出
Yes!
Yes!
No!

本题的思路是:第一行和第三行的数必须相同(第一行和第三行分别只有一个大于0的数,比较这两个数相等即可),第二行第1列要和第3列的数相同,第2列要和第4列的数相同,这三个条件满足即为“Yes!”,否则即为“No!”。

#include<iostream>
using namespace std;
int main()
{
	int n,a[3][4],i,j,s,s1,z;
	cin>>n;
	for(z=1;z<=n;z++)
	{
		for(i=0;i<3;i++)
		{
			for(j=0;j<4;j++)
			{
				cin>>a[i][j];
				if(i==0&&a[i][j]!=0)
				{
					s=a[i][j];
				}
				if(i==2&&a[i][j]!=0)
				{
					s1=a[i][j];
				}
			}
		}
		if(s==s1&&a[1][0]==a[1][2]&&a[1][1]==a[1][3])
			cout<<"Yes!"<<endl;
		else
			cout<<"No!"<<endl;
		if(z%50==0)
			cout<<endl;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_29117927/article/details/85542532
今日推荐