首页 > 代码库 > Life, the Universe, and Everything(spoj)
Life, the Universe, and Everything(spoj)
原题:Your program is to use the brute-force approach in order to find the Answer to Life, the Universe, and Everything. More precisely... rewrite small numbers from input to output. Stop processing input after reading in the number 42. All numbers at input are integers of one or two digits.
Example
Input:12884299Output:1288
题目意思很简单,就是重复输入一下小的数字(int足够了),一旦接收到42数字就停止接收,这里题目的example有误导,容易让人理解为全部输入(然后ctrl+Z结束输入),然后输出第一次遇见42时,在42之前的所有数字,我为什么知道,因为我这样提交过一次
这题的主要难点在于,你不知道在遇到42之前,输入多少个数字,题目里没有给任何限制条件,很明显数组,栈之类的需要分配内存空间大小的不行了,最后通过c++中的vector解决问题的。
vector是一个类模板,vector保存何种对象类型,通过将类型放在类模板名称后面的尖括号中指定类型 vector<int>iver; vector<char> vec;
本题使用vector的唯一原因在于,vector对象可以在运行的时候动态添加元素,不需要直接分配内存,避免不必要的浪费。
简单介绍几个常用的vector对象操作:
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
除了通过下标访问vector对象元素外,还可以通过迭代器访问。迭代器是一种检查容器内元素并且遍历元素的数据类型。
每个迭代器都定义了自己的类型,
如vector<int>::iterator it;
其他的就不细说了,上代码:
1 #include<iostream> 2 #include<stdio.h> 3 #include<vector> 4 using namespace std; 5 int main() 6 { 7 int number; 8 vector<int> vec; 9 while(cin>>number)10 {11 if(number!=42)12 vec.push_back(number);13 else 14 break;15 }16 vector<int>::iterator it;17 for(it=vec.begin(); it!=vec.end(); it++)18 cout<< *it <<endl;19 20 return 0;21 }
运行结果:
Life, the Universe, and Everything(spoj)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。