很懵地第一次做文章(新手上路请见谅)
第一种:暴力做法
根据题目所述,我们可以构建一个图,枚举里面所有的点:(0,0)(0,1)(0,-1)(1,0)(1,1)(1,-1)(-1,0)(-1,1)(-1,-1)
然后,依次判断所有的可能性
代码如下:
#include<bits/stdc++.h>//万能头好评
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
switch(x)
{
case 1:
if(y==1||y==0||y==-1)cout<<"yes";
else cout<<"no";
break;
case 0:
if(y==1||y==0||y==-1)cout<<"yes";
else cout<<"no";
break;
case -1:
if(y==1||y==0||y==-1)cout<<"yes";
else cout<<"no";
break;
default:
cout<<"no";
break;
}
return 0;
}
第二种,相比上一种更为便捷(但不多)
上面的代码中switch语句可以换成一个if和y的条件判断合并:
代码如下:
#include<bits/stdc++.h>//万能头好评*2
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
if((x==1||x==0||x==-1)&&(y==1||y==0||y==-1))cout<<"yes";
else cout<<"no";
return 0;
}
第三种,本人认为相比前两种最快捷的方法
不难发现,符合条件的x,y只有3种可能:
1,0,-1。
由此发现,绝对值只有两种可能:1,0。
所以,合理利用绝对值函数,代码如下:
#include<bits/stdc++.h>//万能头好评*10086
using namespace std;
int x,y;
int main()
{
cin>>x>>y;
if(abs(x)<=1&&abs(y)<=1)cout<<"yes";
else cout<<"no";
return 0;
}