100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > POJ 1552 Doubles (C++ STL set使用)

POJ 1552 Doubles (C++ STL set使用)

时间:2024-04-17 12:20:37

相关推荐

POJ 1552  Doubles  (C++ STL set使用)

题目:

题意:题意:给出几个正数(2~15个),然后就是求有这些数字的2倍有没有和原先的正数相同的,求出有几个,没有就是0.

分析:水题。用数组解决,开一个数组存正数,另开一个数组用来存这些数的2倍,接着就搜索,然后注意一下结束的时候怎么处理就行。

c普通方法:

1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<stack> 6 #include<queue> 7 #include<cmath> 8 #include<algorithm> 9 using namespace std;10 11 int main()12 {13int i,j,a[1000],b[1000],sum,t,x;14while(cin>>t&&t!=-1)15{16 sum=0;17 x=0;18 a[x]=t; b[x++]=2*t;19 while(cin>>t&&t)20 {21 a[x]=t; b[x++]=2*t;22 }23 for(i=0; i<x; i++)24 for(j=0; j<x; j++)25 {26 if(b[i]==a[j])27 {28 sum++;29 break;30 }31 }32 cout<<sum<<endl;33}34return 0;35 }

STL set知识点 :/s/blog_779cf3410101389s.html

/s/blog_6fe0eb190100s7qn.html

/s/blog_60e96a410100g0k9.html

/lansetiankong_yiyi/article/details/5816362

//set集合容器,实际是一棵树,每棵子树的左结点小于根节点的值,

//而根节点的值小于右节点的值,整棵树可以用中序遍历得到一个

不允许元素重复, 如果有重复元素用multiset,multiset的用法与set类似。

) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素

2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数

3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)

默认情况下,set元素按其所属型别的less-than进行排列,

默认从小到大排序。

1 #include<iostream> 2 #include<set> 3 using namespace std; 4 int main() 5 { 6set<int> s; 7set<int>::iterator t; 8int temp; 9cin>>temp;10while(temp != -1)11{12 s.clear();13 while(temp != 0)14 {15 s.insert(temp);16 cin>>temp;17 }18 int c = 0;19 for(t = s.begin(); t != s.end(); t++)20 {21 if(s.count((*t)*2) != 0)22 c++;23 }24 cout<<c<<endl;25 cin>>temp;26}27 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。