AlenaNuna

导航

HJ19 简单错误记录 || 字符串模拟

就是字符串模拟和处理。最大的问题就是题面题意写得真的挺模糊的,好多地方有点表意不明。。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=110;
 4 char a[maxn][maxn];
 5 int b[maxn],num_qc=0,cnt[maxn],ans[maxn],num_ans=0;
 6 bool fg[maxn],f[maxn];
 7 struct JL{
 8     char s[maxn],zm[maxn];
 9     int num,cnt;
10 }jl[maxn],qc[maxn];
11 void wk(char ans[],char zm[],char a[]){
12     int la=strlen(a);
13     int lst=0;
14     for(int i=0;i<la;i++){
15         if(a[i]=='\\')lst=i;
16     }
17     if(lst) lst++;
18     char c[maxn]={};
19     int lc=0;
20     for(int i=lst;i<la;i++) c[lc++]=a[i];
21 //    printf("C: %s %d\n",c,lc);
22     if(lc<=16) {
23         strcpy(ans,c);
24         strcpy(zm,c);
25         return;
26     }
27     lc=strlen(c);
28 //    1234
29 //    2wei
30     // 34
31     for(int i=0;i<16;i++)
32         ans[i]=c[lc-16+i];
33 //    printf("NOW:%s %s\n",c,ans);
34     strcpy(zm,c);
35     return;
36 }
37 int main(){
38     int n=0;
39     while(~scanf("%s",a[n])){
40         scanf("%d",&b[n]);
41         n++;
42 //        if(n==11)break;///////
43     }
44     for(int i=0;i<n;i++)fg[i]=1;
45     for(int i=0;i<n;i++){
46         if(fg[i]==0)continue;
47         for(int j=i+1;j<n;j++){
48             if(fg[j]==0)continue;
49             if(b[i]!=b[j])continue;
50             if(strcmp(a[i],a[j])==0)fg[j]=0;
51         }
52     }//quchong
53     num_qc=0;
54     for(int i=0;i<n;i++){
55         if(fg[i]==0)continue;
56         num_qc++;
57         qc[num_qc].num=b[i];
58         wk(qc[num_qc].s,qc[num_qc].zm,a[i]);
59 //        printf("TEST: %s %d %s\n",qc[num_qc].s,qc[num_qc].num,qc[num_qc].zm);
60     }
61 //    for(int i=1;i<=num_qc;i++)
62 //        printf("%s %d %s\n",qc[i].s,qc[i].num,qc[i].zm);
63     for(int i=1;i<=num_qc;i++)f[i]=1;
64     for(int i=1;i<=num_qc;i++){
65         if(f[i]==0) continue;
66         for(int j=i+1;j<=num_qc;j++){
67             if(f[j]==0)continue;
68             if(strcmp(qc[i].s,qc[j].s)==0&&qc[i].num==qc[j].num){
69                 qc[i].cnt++;
70                 f[j]=0;
71             }
72         }
73         qc[i].cnt++;
74         ans[++num_ans]=i;
75     }
76     if(num_ans>8){
77         for(int i=num_ans-8+1;i<=num_ans;i++){
78             printf("%s %d %d\n",qc[ans[i]].s,qc[ans[i]].num,qc[ans[i]].cnt);
79         }
80     }
81     else {
82         for(int i=1;i<=num_ans;i++)
83             printf("%s %d %d\n",qc[ans[i]].s,qc[ans[i]].num,qc[ans[i]].cnt);
84     }
85     return 0;
86 }

 

posted on 2024-08-31 16:35  AlenaNuna  阅读(6)  评论(0编辑  收藏  举报