题目链接:http://poj.org/problem?id=1782
解题报告:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 1120; int main() { char s[maxn]; char tmp; while(gets(s)) { int len = strlen(s); int i; for(i = 0 ; i < len ; i++) { if(i + 1 < len && s[i] == s[i+1]) ///输出有重复字符的子串 { int j = 0;///重复的次数 tmp = s[i]; j++; i++; while(j < 9 && i < len && s[i] == s[i-1]) { tmp = s[i]; j++; i++; } printf("%d%c",j,tmp); --i; } else ///输出没有重复字符的子串 { printf("1"); while(i < len) { if(i + 1 < len &&s[i] == s[i+1]) { break; } printf("%c",s[i]); if(s[i] == '1') ///如果是1,就将他们变成11 { printf("%c",s[i]); } i++; } --i; printf("1"); } } printf(" "); } return 0; }