zoukankan      html  css  js  c++  java
  • 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 {
    13     int i,j,a[1000],b[1000],sum,t,x;
    14     while(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     }
    34     return 0;
    35 }

    STL  set知识点 :http://blog.sina.com.cn/s/blog_779cf3410101389s.html 

    http://blog.sina.com.cn/s/blog_6fe0eb190100s7qn.html

    http://blog.sina.com.cn/s/blog_60e96a410100g0k9.html

    http://blog.csdn.net/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 {
     6     set<int> s;
     7     set<int>::iterator t;
     8     int temp;
     9     cin>>temp;
    10     while(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 }
  • 相关阅读:
    Day 9
    Day 8
    Day 7
    Day 6
    Day 5
    Day 4
    Day 3
    Day 2
    Day 1
    解决vue-cli3不停请求 /sockjs-node/info?t= 问题
  • 原文地址:https://www.cnblogs.com/bfshm/p/3231116.html
Copyright © 2011-2022 走看看