P1341 无序字母对
生活随笔
收集整理的這篇文章主要介紹了
P1341 无序字母对
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題面:https://www.luogu.org/problem/P1341
本題是一個(gè)歐拉回路模板題,直接建圖跑歐拉回路即可,注意:有環(huán)時(shí)需回溯后再記錄.Code: #include<iostream> #include<cmath> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int N=10005; int cnt[N][N],ans[N],cur,cnt0[N]; void dfs(int u){for(int i=1;i<=52;i++){if(cnt[u][i]){cnt[u][i]--;cnt[i][u]--;cnt0[i]--;cnt0[u]--;dfs(i);}}ans[++cur]=u; } int main(){int n,kdl=0;scanf("%d",&n);scanf("\n");for(int i=1;i<=n;i++){char a,b;int c,d;scanf("%c%c\n\n",&a,&b);if(a>='A'&&a<='Z')c=a-'A'+1;else c=a-'a'+27;if(b>='A'&&b<='Z')d=b-'A'+1;else d=b-'a'+27;cnt[c][d]++;cnt[d][c]++;cnt0[c]++,cnt0[d]++;}int f=0;for(int i=1;i<=52;i++){if(cnt0[i]&1){if(f==0){f=i;}kdl++;}}if(kdl!=2&&kdl){puts("No Solution");return 0;}if(kdl==0){for(int i=1;i<=52;i++){if(cnt0[i]){f=i;break;}}}dfs(f);for(int i=1;i<=52;i++){if(cnt0[i]){puts("No Solution");return 0;}}for(int i=cur;i>=1;i--){if(ans[i]>=1&&ans[i]<=26){printf("%c",ans[i]+'A'-1);}else{printf("%c",ans[i]+'a'-27);}}puts("");return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/ukcxrtjr/p/11504011.html
總結(jié)
以上是生活随笔為你收集整理的P1341 无序字母对的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: P1463 反素数
- 下一篇: P3932 浮游大陆的68号岛