别小看这个题,通过率很低的,比赛的时候我改了好多次最后才改出来
考虑什么时候两者的最短路径是唯一的
一:两者刚好在对角线的时候
二:两者同列或者同行
对于第一种情况,如果缺点恰好在其对之间的对角线上(之外的对角线肯定不会造成影响),最短路就会改变+1
对于第二种情况,如果缺点刚好处于同列(行)之间,那么最短路是不会发生变化的
三:两者的最短路不是唯一的,这样无论缺点在哪里都不会对最短路造成影响
点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
int r1,c1,r2,c2,r3,c3,tot=1;
int main(){
while(~(scanf("%d%d%d%d%d%d",&r1,&c1,&r2,&c2,&r3,&c3))){
int ans;
int len1=abs(r1-r2);
int len2=abs(c1-c2);
int cha=abs(len1-len2);
int rmax=max(r1,r2),rmin=min(r1,r2),cmax=max(c1,c2),cmin=min(c1,c2);
if((abs(r3-r1)==abs(c3-c1)&&rmin<=r3&&r3<=rmax&&c3<=cmax&&cmin<=c3)&&cha==0)
ans=len1+1;
else if((len1==0&&r3==r1)||(len2==0&&c3==c1))
ans=max(len1,len2);
else ans=cha+min(len1,len2);
printf("Case %d: %d\n",tot,ans);
tot++;
}
return 0;
}
标签:r1,r2,int,d%,abs,残缺,c1,棋盘 来源: https://www.cnblogs.com/wzxbeliever/p/16062647.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。