POJ 1016 Numbers That Count(string+map)
来源:互联网 发布:js不区分大小写比较 编辑:程序博客网 时间:2024/06/09 15:23
string有以下几个方便的特性:
1.string重载了+号,==号等符号.
2.string可以和char相加,也可以和char数组相加
通过这两个特性可以很方便的构造每一个数的另一种表示形式。
map 记录每个字符串首次出现的时间,判断周期的时候用。
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#include <map>#include <string>int a[11];int main(){ string s; while(cin>>s){ if(s[0]=='-') break; string ini=s; map <string,int> cur; cur[s]=0; int T=0; int flag=0; for(int i=1;i<=15;i++){ memset(a,0,sizeof(a)); int len=s.size(); for(int j=0;j<len;j++){ a[s[j]-'0']++; } string tmp=""; char num[100]; for(int j=0;j<=9;j++){ if(!a[j]) continue; sprintf(num,"%d",a[j]); tmp+=num; tmp+=char(j+'0'); } if(tmp==s){ flag=1; T=i; break; } s=tmp; if(cur.count(s)){ flag=2; T=i-cur[s]; break; } cur[s]=i; } cout<<ini; if(flag==1&&T==1){ printf(" is self-inventorying\n"); } else if(flag==1&&T>1){ printf(" is self-inventorying after %d steps\n",T-1); } else if(flag==2){ printf(" enters an inventory loop of length %d\n",T); } else if(!flag){ printf(" can not be classified after 15 iterations\n"); } } return 0;}
0 0
- POJ 1016 Numbers That Count(string+map)
- POJ 1016 Numbers That Count(水~)
- POJ 1016 Numbers That Count
- POJ 1016 Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016 Numbers That Count
- POJ 1016 Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016 Numbers That Count
- [POJ][1016]Numbers That Count
- POJ 1016 - Numbers That Count
- POJ 1016 Numbers That Count
- POJ-1016 Numbers That Count
- POJ 1016: Numbers That Count
- POJ 1016--Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016--Numbers That Count
- POJ-1016-Numbers That Count
- 图片的处理
- debug : 日志函数引起的崩溃
- Python基础07 函数
- struct的初始化及其构造函数
- 生成n对括号的所有合法排列
- POJ 1016 Numbers That Count(string+map)
- Flume-ng spoolDir分布式日志收集目录监控
- Android点滴积累系列--资源overlay机制(转)
- C#设计模式(1)——单例模式
- 使用RMAN恢复备库
- IaaS私有云数据中心系统设计-罗逸秀(IaaS 云数据中心)
- 设计模式之单例模式
- objective-c编程全解(第三版读书笔记)
- 题目1106:数字之和 Java 代码