POJ 1016 循环数 字符串处理与英文理解

这题挺简单,但是题目稍微有点长,基本没什么算法。

#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; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值