hdu 2034 - 集合操作

时间:2021-11-12 07:33:05

题意:集合A,B,计算集合差A-B(求只在集合A内的数)

解法:

选用STL内的集合set

1.建立set

   1:  #include<set>
   2:   
   3:  set<int> se;

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

2.关于集合的遍历,固定的格式:

用容器的iterator访问所有数据。

   1:  for(set<int>::iterator it=a.begin();it!=a.end();it++){
   2:      //TO DO
   3:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

3.相应的用*it访问set内的数据

4.set内的数据会自动排序,从小到大的顺序。

5.关于find()操作:

如果找不到,会返回set.end()

附上我的代码:

   1:  #include<iostream>
   2:  #include<cstdio>
   3:  #include<cstdlib>
   4:  #include<string>
   5:  #include<string.h>
   6:  #include<set>
   7:  using namespace std;
   8:  int main(){
   9:      int n,m,tmp;
  10:      while(scanf("%d %d",&n,&m)!=EOF&&(n||m)){
  11:          set<int> a,b;
  12:          while(n--){
  13:              scanf("%d",&tmp);
  14:              a.insert(tmp);
  15:          }
  16:          while(m--){
  17:              scanf("%d",&tmp);
  18:              b.insert(tmp);
  19:          }
  20:          int cnt=0;
  21:          for(set<int>::iterator it=a.begin();it!=a.end();it++){
  22:              if(b.find(*it)==b.end()){
  23:                  printf("%d ",*it);
  24:                  cnt++;
  25:              }
  26:          }
  27:          if(cnt==0)printf("NULL");
  28:          printf("\n");
  29:      }
  30:  }
  31:      

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }