POJ 1016 循环数 字符串处理与英文理解
2010-11-22 20:07
417 查看
这题挺简单,但是题目稍微有点长,基本没什么算法。
#include <iostream> #include <string> using namespace std; string transfer(string s){ int num[10] = {0}; char res[80]; int i; int j = 0; for (i = 0 ; i < s.length() ; i++) num[s[i] - '0']++; for ( i = 0 ; i < 10; i++){ if (num[i] > 0 && num[i] < 10) { res[j++] = num[i] + '0'; res[j++] = i + '0'; } else if(num[i] >= 10) { res[j++] = num[i]/10 + '0'; res[j++] = num[i]%10 + '0'; res[j++] = i + '0'; } } res[j++] = '/0'; return res; } int main(){ string s[20]; int i,j; bool flag;//标记是否输出过 while (1) { for (i = 0;i < 20; i++) { s[i] = ""; } flag = false; cin>>s[0]; if(s[0] == "-1") break; for( i = 0;i < 16; i++){ s[i+1] = transfer(s[i]); } for (i = 0;i < 16 && (!flag); i++) { for (j = i+1;j<16 && (!flag);j++) { if (s[j] == s[i] && j == 1 && i == 0) { cout<<s[0]<<" is "<<"self-inventorying"<<endl; flag = true; break; } else if (s[j] == s[i] && j == i+1 && i != 0) { cout<<s[0]<<" is "<<"self-inventorying after "<<j-1<<" steps"<<endl; flag = true; break; } else if (s[j] == s[i] && j != i+1) { cout<<s[0]<<" enters an inventory loop of length "<<(j - i)<<endl; flag = true; break; } } } if (!flag) { cout<<s[0]<<" can not be classified after 15 iterations"<<endl; } } return 0; }
相关文章推荐
- POJ 1016 Numbers That Count(字符串处理)
- POJ-2803 英文阅读+字符串处理
- POJ 1016(自总结数 字符串处理) 解题报告
- POJ 1016(自总结数 字符串处理) 解题报告
- poj1016--字符串处理
- Babelfish(poj2503字符串处理)
- linux C --深入理解字符串处理函数 strlen() strcpy() strcat() strcmp()
- POJ 3094 字符串处理及空格输入
- POJ 3345 Bribing FIPA 树形背包+字符串处理
- POJ 1035 Spell Check 字符串处理
- POJ1035——Spell checker(字符串处理)
- POJ 1750 Dictionary (字符串处理)
- POJ3096字符串处理
- 【字符串处理】poj1936
- (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
- 对处理字符以及字符串的理解!String类的使用!
- poj 1951 Extra Krunch 字符串处理水题
- 【字符串处理】poj1035
- POJ 1016 模拟字符串
- poj 1580 String Matching 【字符串处理】