其他分享
首页 > 其他分享> > Codeforces Round #573 (Div. 2)

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