AC题解:
#include<bits/stdc++.h>
using namespace std;
int dx[8] = {1,2,2,1,-1,-2,-2,-1};
int dy[8] = {2,1,-1,-2,-2,-1,1,2};
int main(){
long long x1,y1,x2,y2,a,b,xx1,xx2,yy1,yy2;
while(scanf("%lld %lld %lld %lld", &x1, &y1, &x2, &y2)!=EOF){
int flag = 0;
for(int i=0; i<8; i++){
a=x1+dx[i];
b=y1+dy[i];
xx1=a-x1;
yy1=b-y1;
xx2=a-x2;
yy2=b-y2;
if(xx1*xx1 + yy1*yy1 ==5 && xx2*xx2 + yy2*yy2 == 5) flag=1;
//else flag = 0;
}
if(flag==1) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
不知道为什么,如果加了第17行的else flag = 0 就不是正确答案了,如果有大佬能解释,感激不尽