Codeforces Round #573 (Div. 2)
作者:互联网
http://codeforces.com/contest/1191
第二题:
判断三个数是否是相同或者含顺序位置的关系,另外答案只可能是0,1,2
ans==0,说明首先三个数的字母完全相同,另外三个数的数字大小相同或者大小呈顺序关系
ans==1, 说明至少2个数的字母完全相同,另外这2个数的数字大小相同或者大小呈顺序关系(这两个相差1或者2)
ans==2,就是剩下的情况
我的做法:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 char x,y,z; 8 int a,b,c; 9 scanf("%d%c",&a,&x); 10 scanf("%d%c",&b,&y); 11 scanf("%d%c",&c,&z); 12 int flag=-1; 13 int arr[3]; 14 if(x==y&&y==z&&flag==-1) 15 { 16 if(a==b&&b==c) 17 flag=0; 18 arr[0]=a,arr[1]=b,arr[2]=c; 19 sort(arr,arr+3); 20 if(arr[1]==arr[0]+1&&arr[1]==arr[2]-1)//这三个数连续 21 flag=0; 22 } 23 if(x==y&&flag==-1) 24 { 25 if(a==b) 26 flag=1; 27 if(a==b+1||a==b-1||a==b+2||a==b-2) 28 flag=1; 29 } 30 if(z==y&&flag==-1) 31 { 32 if(c==b) 33 flag=1; 34 if(c==b+1||c==b-1||c==b+2||c==b-2) 35 flag=1; 36 } 37 if(x==z&&flag==-1) 38 { 39 if(a==c) 40 flag=1; 41 if(a==c+1||a==c-1||a==c+2||a==c-2) 42 flag=1; 43 } 44 if(flag==-1) 45 flag=2; 46 cout<<flag<<endl; 47 }
大佬的简易做法:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 string str; 6 int a[3]; 7 for(int i=0;i<3;++i) 8 cin>>str,a[i]=(str[0]-'0')+(str[1]-'a')*100; 9 sort(a,a+3); 10 int t1=a[1]-a[0],t2=a[2]-a[1]; 11 if(t1==t2&&(t1==1||t1==0))//shunzi 12 cout<<0<<endl; 13 else if(t1==0||t1==1||t1==2||t2==0||t2==1||t2==2) 14 cout<<1<<endl; 15 else 16 cout<<2<<endl; 17 return 0; 18 }
标签:arr,573,Codeforces,t1,int,flag,&&,Div,include 来源: https://www.cnblogs.com/Aiahtwo/p/11181185.html