版权声明:本人原创,转载请注明出处! 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;
}
}