题目连接:http://poj.org/problem?id=1016
题目没什么好说的,就是模拟,可以用string来简化代码。
代码:
Source Code
Problem: 1016
|
|
User: bingshen
|
Memory: 236K |
|
Time: 141MS |
Language: C++ |
|
Result: Accepted
|
-
Source Code
#include<iostream>
#include<string>
using namespace std;
string str[20];
void dfs(string input,int index)
{
int i,num[10]={0};
string temp;
if(index==16)
return;
for(i=0;i<input.length();i++)
num[input[i]-'0']++;
for(i=0;i<10;i++)
{
if(num[i])
{
if(num[i]<10)
temp.insert(temp.end(),num[i]+'0');
else
{
temp.insert(temp.end(),num[i]/10+'0');
temp.insert(temp.end(),num[i]%10+'0');
}
temp.insert(temp.end(),i+'0');
}
}
str[index]=temp;
dfs(temp,index+1);
}
int findloop(int index)
{
int i;
for(i=index+1;i<=15;i++)
if(str[i]==str[index])
return (i-index);
return 0;
}
int main()
{
int loop,i;
bool flag,after;
string input;
while(cin>>input)
{
if(input=="-1")
break;
str[0]=input;
after=true;
dfs(input,1);
if(str[0]==str[1])
{
cout<<str[0]<<" is self-inventorying"<<endl;
continue;
}
for(i=1;i<=15;i++)
{
if(str[i-1]==str[i])
{
after=false;
cout<<str[0]<<" is self-inventorying after "<<i-1<<" steps"<<endl;
break;
}
}
if(after)
{
flag=true;
for(i=0;i<=15;i++)
{
loop=findloop(i);
if(loop)
{
flag=false;
cout<<str[0]<<" enters an inventory loop of length "<<loop<< endl;
break;
}
}
if(flag)
cout<<str[0]<<" can not be classified after 15 iterations"<<endl;
}
}
return 0;
}
分享到:
相关推荐
标题中的“poj acm300题 c++源码打包”表明这是一份包含300个在POJ(编程在线判题系统)上已通过的ACM竞赛题目解决方案的压缩文件,语言为C++。ACM,即国际大学生程序设计竞赛(International Collegiate ...
在讨论的三道poj模拟题中,都涉及到二分查找的核心思想与实现方法,通过实际的问题场景来加深对二分查找算法的理解与应用。 第一题是Cablemaster(poj1064)。题目描述了一个实际应用问题,需要从一定数量的电缆中...
根据题目要求,以下是从“poj推荐50题”中提炼出的相关知识点: ### 第一类:动态规划 #### 重要性: 动态规划是算法学习中的重要组成部分,它可以帮助解决许多复杂的问题,通过将问题分解为更小的子问题来求解。 ...
* 模拟法:模拟法是指通过模拟问题的过程来解决问题的方法,如 poj1068、poj2632、poj1573、poj2993、poj2996。 二、图算法 图算法是指解决图相关问题的算法,包括图的深度优先遍历和广度优先遍历、最短路径算法...
模拟题是POJ平台上的一种常见题型,它要求使用编程语言来模拟真实世界中的某些过程或系统。以下是一些模拟题的示例: * 1001 Exponentiation:本题目要求使用编程语言来模拟幂运算。 * 1002 487-3279:本题目要求...
【标题】"POJ 300多题AC代码"涉及的是编程竞赛中的问题解决和算法实践,主要针对ACM(国际大学生程序设计竞赛)的比赛训练。POJ(Problemset Online Judge)是一个在线的编程练习平台,提供了丰富的编程题目供参赛者...
* 较为复杂的模拟题的训练:例如 poj3393、poj1472、poj3371、poj1027、poj2706。 2. 图算法: * 差分约束系统的建立和求解:例如 poj1201、poj2983。 * 最小费用最大流:例如 poj2516、poj2516、poj2195。 * ...
- (poj1860, poj3259, poj1062, poj2253, poj1125, poj2240):介绍迪杰斯特拉算法(Dijkstra)、贝尔曼-福特算法(Bellman-Ford)、弗洛伊德算法(Floyd)等。 - 使用堆优化的迪杰斯特拉算法。 3. **最小生成树...
- 复杂的模拟题:如`poj3393, poj1472`。 - **图算法** - 差分约束系统:如`poj1201, poj2983`。 - 最小费用最大流:如`poj2516, poj2195`。 - **数据结构** - 线段树:如`poj2528, poj2828`。 - RMQ(区间...
2. **复杂的模拟题**:poj3393、poj1472等训练选手处理复杂逻辑和模拟问题的能力。 3. **图算法的深化**:如差分约束系统、最小费用最大流、双连通分量、强连通分支及其缩点、图的割边和割点、最小割模型等。poj1201...
8. **模拟**:根据题目描述,编写程序模拟过程。 9. **编码技巧**:输入输出的优化,如scanf/printf与cin/cout的选择,避免不必要的空格和换行。 10. **时间复杂度与空间复杂度分析**:理解算法效率,优化代码。 ...
POJ作为一个知名的在线编程平台,提供了大量的算法练习题,适合从初学者到高级选手的不同层次用户。下面,我们将根据给定的部分内容,深入探讨POJ上的题目分类以及相关的知识点。 ### 一、基本算法 #### 枚举 枚举...
- **模拟法**:按照题目描述的逻辑进行编程模拟,如poj1068、poj2632等。 2. **图算法**: - **深度优先遍历和广度优先遍历**:是图的基本操作,用于搜索图的所有节点。 - **最短路径算法**:包括dijkstra、...
【标题】"POJ1840-Eqs"是一道来自北京大学在线判题系统POJ(Problem Online Judge)的编程题目。这道题目的全称可能是"Eqs",可能涉及数学或算法问题,通常在这样的在线判题系统中,题目会要求参赛者编写程序解决...
标题中的"POJ1017-Packets"指的是北京大学在线编程平台POJ(Problem Set of Peking University)上的第1017题,这是一道关于数据包处理的问题。题目通常要求参赛者编写程序来解决特定的算法或逻辑挑战。 在描述中...
每个文件可能对应一个特定的POJ题目,可能包含了解题思路、代码实现、时间复杂度和空间复杂度分析等内容。 通过这个资源,学习者可以: 1. **理解C++编程**:观察解题代码,学习C++语法和特性。 2. **掌握算法**:...
`POJ1416-Shredding Company.doc`可能是解题报告,详细解释了解题思路、算法设计过程以及可能的优化措施。 详细知识点: 1. **动态规划**:动态规划是一种将大问题分解成小问题,并存储子问题的解来避免重复计算的...
POJ(Problem Set of Peking University)是北京大学维护的一个在线判题系统,它为参赛者提供了大量不同难度级别的题目,涵盖了数据结构、算法、数学等多个领域。 这个离线题库中的每个独立页面可能包括以下部分: ...
【标题】"POJ1004 - Financial Management" 是一个来自北京大学在线判题系统POJ(Problem Set of Peking University)的编程题目。这个题目主要涉及到计算机科学中的算法设计和实现,特别是与财务管理和计算相关的...
其次,模拟题通常是指通过精确复制问题的逻辑来求解的题目,这类题目往往不需要复杂的算法,而是对问题的细节理解到位。以下是一些适合初学者的模拟题: 1. 1001 Exponentiation:快速幂运算,理解和实现基本的数学...