您的位置:首页 > 其它

杭电 acm 1020

2014-08-23 10:34 302 查看
多校综合排名前25名的学校请发送邮件到HDUACM@QQ.COM,告知转账信息(支付宝或者卡号)

Encoding

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 26744    Accepted Submission(s): 11806


[align=left]Problem Description[/align]

Given a string containing only 'A' - 'Z', we could encode it using the following method: 

1. Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub-string.

2. If the length of the sub-string is 1, '1' should be ignored.

 

[align=left]Input[/align]
The first line contains an integer N (1 <= N <= 100) which indicates the number of test cases. The next N lines contain N strings. Each string consists of only 'A' - 'Z' and the length is less than 10000.

 

[align=left]Output[/align]
For each test case, output the encoded string in a line.

 

[align=left]Sample Input[/align]

2ABCABBCCC

 

[align=left]Sample Output[/align]

ABCA2B3C

小开心,一次AC!


不过发现杭电审检有一点不严谨,题目说先输入一个数字作为接下来的用例次数,可是我的程序却出现用例次数无限,即循环,与数字无关,虽然与我初衷有些不同,但却能通

过!哈哈,再找时间修改!先贴AC代码!

#include<stdio.h>
#include<string.h>
int main(){
char a,a_1;
int n,i,m,t=1;
while(scanf("%d\n",&n)!=EOF){
for(m=0;m<n;m++){
i=0;
while(1){
a=getchar();
i=i+1;
if(i==1) a_1=a;
if(i>1&&65<=a&&a<=90){
if(a_1==a)
t=t+1;
if(a_1!=a){
if(t==1){
printf("%c",a_1);
a_1=a;
}
if(t!=1){
printf("%d%c",t,a_1);
a_1=a;
t=1;
}
}
}
if(a<65||a>90){
if(t==1){
printf("%c\n",a_1);
break;
}
if(t!=1){
printf("%d%c\n",t,a_1);
break;
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  杭电 acm c 1020