HDU 4167 User Names
来源:互联网 发布:mysql update if 编辑:程序博客网 时间:2024/05/17 02:46
题意:根据输入顺序,如果有姓名相同的串,将最后的尾数在要求范围内加上数字下标
当时写的时候写到最后已经很难受了,好在最后把这个题水了出来,一遍AC
代码很长很麻烦,有好的方法大家可以告诉我一下
代码如下
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<iostream>using namespace std;char a[200+10][80+10];char b[200+10][80+10];int js[200+10];bool db(char *a,char *b){ int la=strlen(a),lb=strlen(b); if(la!=lb) return false; for(int i=0; i<la; i++) if(a[i]!=b[i]) return false; return true;}bool iszm(char c){ if(c>='a'&&c<='z') return true; return false;}int main(){ int n,maxlen,cases=1; while(scanf("%d%d",&n,&maxlen)&&n) { getchar(); memset(js,0,sizeof(js)); memset(b,0,sizeof(b)); for(int i=0; i<n; i++) { gets(a[i]); int l=strlen(a[i]); for(int j=0; j<l; j++) { if(a[i][j] >='A'&&a[i][j] <='Z') a[i][j]=a[i][j]-'A'+'a'; } } for(int i=0; i<n; i++) { int len=strlen(a[i]); b[i][0]=a[i][0]; int jl=0; for(int j=len-1; j>=0; j--) { if(a[i][j]==' ') { jl=j+1; break; } } int num=1; for(int k=jl; k<len; k++) { if(iszm(a[i][k])) { b[i][num]=a[i][k]; ++num; } if(num>maxlen-1) break; } } printf("Case %d\n",cases++); for(int i=0; i<n; i++) { int flag=1,num=0; for(int j=0; j<=i; j++) { if(db(b[i],b[j])) { flag=0; num=js[j]; if(num==0) { printf("%s",b[i]); } else if(num<10) { int kz=maxlen-strlen(b[i]); for(int l=0; l<strlen(b[i])-1+kz&&b[i][l]!=0; l++) printf("%c",b[i][l]); printf("%d",num); } else if(num>=10&&num<100) { int kz=maxlen-strlen(b[i]); for(int l=0; l<strlen(b[i])-2+kz&&b[i][l]!=0; l++) printf("%c",b[i][l]); printf("%d",num); } else { int kz=maxlen-strlen(b[i]); for(int l=0; l<strlen(b[i])-3+kz&&b[i][l]!=0; l++) printf("%c",b[i][l]); printf("%d",num); } js[j]++; printf("\n"); break; } } } }}
0 0
- HDU 4167 User Names
- HDU 4167 User Names
- HDU 4167 User Names【string stl】
- HDU 4167 User Names (字符串水题)
- UVALive 5739 User Names
- UVALive 5739|User Names|模拟
- HDU 6143 Killer Names
- HDU-6140 Killer Names
- hdu--6143--Killer Names
- hdu 6143 Killer Names
- hdu 6143 Killer Names
- HDU 6143 Killer Names
- hdu 6143 Killer Names
- HDU 6143 Killer Names
- HDU --6143 Killer Names
- hdu 6143 Killer Names dp
- Killer Names(hdu 6143)
- Killer Names(HDU 6143)
- hdu2552
- Python Enumerate
- HDU 4417Super Mario 划分树 + 二分
- Android 开发资源
- 自己整理的安卓逆向学习路线图
- HDU 4167 User Names
- 【二叉搜索数】HDU3791二叉搜索树
- SimplifyReader源码学习:(一)音乐播放功能总结
- Mac pro安装Ubuntu
- 2016SDAU编程练习三1012
- iOS之单例模式常见写法
- Android Service的Binder通信机制
- 大数相加 C/C++
- Okhttp session持久化