1 条题解

  • 0
    @ 2022-7-12 23:06:31
    #include<bits/stdc++.h>
    #define fu(i,q,w) for(register int i=q;i<=w;i++)
    #define fd(i,q,w) for(register int i=q;i>=w;i--)
    using namespace std;
    typedef long long ll;
    inline int read(){
        int ret=0,f=1;char c;
        while((c=getchar())<'0'||c>'9')if(c=='-')f=-1;
        while(c>='0'&&c<='9')ret=ret*10+(c-'0'),c=getchar();
        return ret*f;
    }
    char word[10];//记录字母 
    char check[10];//检查重复 
    string numx,numy;//储存输入数据、检查重复 
    map<char,int> two;//一行中两位数个数 
    map<char,int> tone;//存字母在两位数个位出现几次 
    int n;
    void in(){
        n=read();
        cin>>numx;//"+"特判输入 
        fu(i,1,n-1){cin>>numx,word[i]=numx[0];}// 第一行存表头的每个字母 
        fu(i,1,n-1)//从第二行开始 
        fu(j,1,n){cin>>numx;
                
            if(j!=1&&j!=2)//表头不算
            if(numx==numy){printf("ERROR!");exit(0);}//发现重复输入一定不对 
            numy=numx; //前后比,不要全行比
            if(numx.size()==2){//统计两位数个数 
                two[word[i]]++;tone[numx[1]]++;
            }
        }
    }
    void solve(){
        fu(i,1,n-1)
        if(two[word[i]]!=n-2-tone[word[i]]){printf("ERROR!");exit(0);}
        //比较两种算法的结果是否相同
     	fu(i,1,n-1)
     	cout<<word[i]<<'='<<two[word[i]]<<' ';
     	printf("\n");
     	printf("%d",n-1);
     	
     	
        }
    int main(){
        in();
        solve();
        return 0; 
        
    }
    
    • 1

    信息

    ID
    14
    时间
    1000ms
    内存
    125MiB
    难度
    4
    标签
    递交数
    7
    已通过
    5
    上传者