POJ 3438 Look and Say C语言版

题目链接:http://poj.org/problem?id=3438

题目是一种压缩算法,比如11111是5个1就写成51,222333是3个2和3个3写成3233。依次类推。利用计数记录下相连的数的个数,当不连续的时候输出,不过这个题我的方法,循环完后还要输出漏掉的一次!

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*Problem: 3438		User: awq123
**Memory: 168K Time: 204MS
**Language: C++ Result: Accepted
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int t;
char d[1005];
scanf("%d",&t;);
while(t--)
{
scanf("%s",d);
int i,c=1;
int len=strlen(d);
for(i=1;i<len;i++)
{
if(d[i]==d[i-1])
{
c++;
}
else
{
printf("%d%c",c,d[i-1]);
c=1;
}
}
printf("%d%cn",c,d[i-1]);
}

}