`
lilisalo
  • 浏览: 1125327 次
文章分类
社区版块
存档分类
最新评论

POJ 1016 模拟题

 
阅读更多

题目连接: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++源码打包

    标题中的“poj acm300题 c++源码打包”表明这是一份包含300个在POJ(编程在线判题系统)上已通过的ACM竞赛题目解决方案的压缩文件,语言为C++。ACM,即国际大学生程序设计竞赛(International Collegiate ...

    poj模拟题(二分查找)

    在讨论的三道poj模拟题中,都涉及到二分查找的核心思想与实现方法,通过实际的问题场景来加深对二分查找算法的理解与应用。 第一题是Cablemaster(poj1064)。题目描述了一个实际应用问题,需要从一定数量的电缆中...

    poj推荐50题

    根据题目要求,以下是从“poj推荐50题”中提炼出的相关知识点: ### 第一类:动态规划 #### 重要性: 动态规划是算法学习中的重要组成部分,它可以帮助解决许多复杂的问题,通过将问题分解为更小的子问题来求解。 ...

    POJ算法题目分类

    * 模拟法:模拟法是指通过模拟问题的过程来解决问题的方法,如 poj1068、poj2632、poj1573、poj2993、poj2996。 二、图算法 图算法是指解决图相关问题的算法,包括图的深度优先遍历和广度优先遍历、最短路径算法...

    POJ各题算法分类和题目推荐 ACM必看

    模拟题是POJ平台上的一种常见题型,它要求使用编程语言来模拟真实世界中的某些过程或系统。以下是一些模拟题的示例: * 1001 Exponentiation:本题目要求使用编程语言来模拟幂运算。 * 1002 487-3279:本题目要求...

    POJ 300多题AC代码

    【标题】"POJ 300多题AC代码"涉及的是编程竞赛中的问题解决和算法实践,主要针对ACM(国际大学生程序设计竞赛)的比赛训练。POJ(Problemset Online Judge)是一个在线的编程练习平台,提供了丰富的编程题目供参赛者...

    poj题目分类

    * 较为复杂的模拟题的训练:例如 poj3393、poj1472、poj3371、poj1027、poj2706。 2. 图算法: * 差分约束系统的建立和求解:例如 poj1201、poj2983。 * 最小费用最大流:例如 poj2516、poj2516、poj2195。 * ...

    acm训练计划(poj的题)

    - (poj1860, poj3259, poj1062, poj2253, poj1125, poj2240):介绍迪杰斯特拉算法(Dijkstra)、贝尔曼-福特算法(Bellman-Ford)、弗洛伊德算法(Floyd)等。 - 使用堆优化的迪杰斯特拉算法。 3. **最小生成树...

    poj训练计划.doc

    - 复杂的模拟题:如`poj3393, poj1472`。 - **图算法** - 差分约束系统:如`poj1201, poj2983`。 - 最小费用最大流:如`poj2516, poj2195`。 - **数据结构** - 线段树:如`poj2528, poj2828`。 - RMQ(区间...

    acm poj300题分层训练

    2. **复杂的模拟题**:poj3393、poj1472等训练选手处理复杂逻辑和模拟问题的能力。 3. **图算法的深化**:如差分约束系统、最小费用最大流、双连通分量、强连通分支及其缩点、图的割边和割点、最小割模型等。poj1201...

    poj习题答案

    8. **模拟**:根据题目描述,编写程序模拟过程。 9. **编码技巧**:输入输出的优化,如scanf/printf与cin/cout的选择,避免不必要的空格和换行。 10. **时间复杂度与空间复杂度分析**:理解算法效率,优化代码。 ...

    poj各种分类

    POJ作为一个知名的在线编程平台,提供了大量的算法练习题,适合从初学者到高级选手的不同层次用户。下面,我们将根据给定的部分内容,深入探讨POJ上的题目分类以及相关的知识点。 ### 一、基本算法 #### 枚举 枚举...

    POJ题目简单分类(ACM)

    - **模拟法**:按照题目描述的逻辑进行编程模拟,如poj1068、poj2632等。 2. **图算法**: - **深度优先遍历和广度优先遍历**:是图的基本操作,用于搜索图的所有节点。 - **最短路径算法**:包括dijkstra、...

    POJ1840-Eqs

    【标题】"POJ1840-Eqs"是一道来自北京大学在线判题系统POJ(Problem Online Judge)的编程题目。这道题目的全称可能是"Eqs",可能涉及数学或算法问题,通常在这样的在线判题系统中,题目会要求参赛者编写程序解决...

    POJ1017-Packets

    标题中的"POJ1017-Packets"指的是北京大学在线编程平台POJ(Problem Set of Peking University)上的第1017题,这是一道关于数据包处理的问题。题目通常要求参赛者编写程序来解决特定的算法或逻辑挑战。 在描述中...

    西北工业大学C++POJ答案

    每个文件可能对应一个特定的POJ题目,可能包含了解题思路、代码实现、时间复杂度和空间复杂度分析等内容。 通过这个资源,学习者可以: 1. **理解C++编程**:观察解题代码,学习C++语法和特性。 2. **掌握算法**:...

    POJ1416-Shredding Company

    `POJ1416-Shredding Company.doc`可能是解题报告,详细解释了解题思路、算法设计过程以及可能的优化措施。 详细知识点: 1. **动态规划**:动态规划是一种将大问题分解成小问题,并存储子问题的解来避免重复计算的...

    北大oj[POJ]ACM题库

    POJ(Problem Set of Peking University)是北京大学维护的一个在线判题系统,它为参赛者提供了大量不同难度级别的题目,涵盖了数据结构、算法、数学等多个领域。 这个离线题库中的每个独立页面可能包括以下部分: ...

    POJ1004-Financial Management

    【标题】"POJ1004 - Financial Management" 是一个来自北京大学在线判题系统POJ(Problem Set of Peking University)的编程题目。这个题目主要涉及到计算机科学中的算法设计和实现,特别是与财务管理和计算相关的...

    算法分类以及POJ题目分类

    其次,模拟题通常是指通过精确复制问题的逻辑来求解的题目,这类题目往往不需要复杂的算法,而是对问题的细节理解到位。以下是一些适合初学者的模拟题: 1. 1001 Exponentiation:快速幂运算,理解和实现基本的数学...

Global site tag (gtag.js) - Google Analytics