题目:https://codeforces.com/contest/1191/problem/B
1.利用结构体
strut T{
int a;
char c;
}q[100];
int cmp(T.x,T.y)
return x.a<y.a;
2.分别读入数字字母。
int a1,a2,a3;
char s1,s2,s3;
scanf("%d%c%d%c%d%c")//适用于字符串长度短
直接比较a1,a2,a3
3.直接读入字符串,作交换
#include<bits/stdc++.h>
using namespace std;
int main() {
int ans=2;
string s1,s2,s3;
cin>>s1>>s2>>s3;
if(s1[0]>s2[0])swap(s1,s2);
if(s1[0]>s3[0])swap(s1,s3);
if(s2[0]>s3[0])swap(s2,s3);
if(s1[0]>s2[0])swap(s1,s2);
if(s1[0]>s3[0])swap(s1,s3);
if(s2[0]>s3[0])swap(s2,s3);
if(s1= =s2 && s2= =s3)ans=0;
if(s1= =s2 || s2==s3 || s1= =s3)ans=min(ans,1);
if(s1[1]==s2[1] && s2[1]==s3[1] && s2[0]-s1[0]==1 && s3[0]-s2[0]==1)ans=0;
if((s1[1]==s2[1] && s2[0]-s1[0]<=2) || (s1[1]==s3[1] && s3[0]-s1[0]<=2) || (s2[1]==s3[1] && s3[0]-s2[0]<=2))ans=min(ans,1);
cout<<ans;
}
4.字符和数字重新赋给新的数组
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
#define ll long long
string s1,s2,s3;
int a[10];
char c[10];
int main()
{
cin>>s1>>s2>>s3;
a[1]=s1[0]-'0';//通常 - ‘0’,都是把一个字符类型的数字转换为整形的数字,例如
‘3’ - ‘0’ 对应的ASCLL码就是 51-48 ,结果是3
a[2]=s2[0]-'0';
a[3]=s3[0]-'0';
c[1]=s1[1];
c[2]=s2[1];
c[3]=s3[1];
int ans1,ans2;
if(a[1]==a[2]&&a[2]==a[3]&&c[1]==c[2]&&c[2]==c[3]) ans1=0;
else if( (a[1]= =a[2]&&c[1]= =c[2]) || (a[2]= =a[3]&&c[2]= =c[3]) ||(a[1]= =a[3]&&c[1]= =c[3]) ) ans1=1;
else ans1=2;
//321 312 132 123
if(a[2]>a[3])
{
swap(a[2],a[3]);
swap(c[2],c[3]);
}
if(a[1]>a[2])
{
swap(a[1],a[2]);
swap(c[1],c[2]);
}
if(a[2]>a[3])
{
swap(a[2],a[3]);
swap(c[2],c[3]);
}
//cout<<a[1]<<a[2]<<a[3]<<endl;
//cout<<c[1]<<c[2]<<c[3]<<endl;
if(a[2]= =(a[1]+1)&&a[3]= =(a[2]+1)&&c[1]==c[2]&&c[2]==c[3]) ans2=0;
else if( (a[2]==a[1]+1&&c[2]==c[1])||(a[3]==a[2]+1&&c[2]==c[3])|| (a[2]==a[1]+2&&c[2]==c[1])||(a[3]==a[2]+2&&c[2]==c[3]) ||(a[3]==a[1]+2&&c[1]==c[3]) ||(a[3]==a[1]+1&&c[1]==c[3]))
ans2=1;
else ans2=2;
printf("%d",min(ans1,ans2));
return 0;
}