顺序表应用1:多余元素删除之移位算法

题目链接:

https://acm.sdut.edu.cn/onlinejudge3/problems/3324

复习上学期对于重复元素的删除操作,还是蛮简单的;

主要是还是用数组做习惯也顺手

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e4+10;
 4 int t;
 5 int main()
 6 {
 7     std::ios::sync_with_stdio(false);
 8     cin.tie(0);
 9     cout.tie(0);
10     cin>>t;
11     while(t--)
12     {
13         int a[maxn];
14         memset(a,0,sizeof(a));
15         int m;
16         cin>>m;
17         for(register int i=0;i<m;i++)
18         cin>>a[i];
19         for(register int i=0;i<m-1;i++)//选择排序的思想
20         {
21             for(register int j=i+1;j<m;j++)
22             {
23                 if(a[i]==a[j])//发现有相等的元素
24                 {
25                     for(register int k=j;k<m-1;k++)//从此位开始向后
26                     {
27                         a[k]=a[k+1];//后面元素向前位移
28                     }    
29                         j--;//上面有j++;保持遍历的不变性
30                         m--;//覆盖了之后少一个元素
31                 }
32             }
33         }
34         for(register int i=0;i<m;i++)
35         cout<<a[i]<<' ';
36         cout<<endl;
37     }
38     return 0;
39 }

 ---------

2022/5/4-20:23;

在做建表题目的时候,发现用STL也是一个好办法,但不知道为什么sdut不给过,给了RTE;

代码放着,以后研究:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int t;
 4 int main()
 5 {
 6     std::ios::sync_with_stdio(false);
 7     cin>>t;
 8     while(t--)
 9     {
10         int n;
11         cin>>n;
12         vector<int>a;
13         for(register int i=0;i<n;i++)
14         {
15             int temp;
16             cin>>temp;
17             a.push_back(temp);
18         }
19         for(register int i=0;i<n-1;i++)
20         {
21             for(register int j=i+1;j<n;j++)
22             {
23                 if(a[i]==a[j])
24                 {
25                     for(register int k=j;k<n-1;k++)
26                     a.erase(a.begin()+k);
27                     j--;
28                     n--;
29                 }
30             }
31         }
32         for(register int i=0;i<n;i++)
33         {
34             cout<<a[i]<<' ';
35         }
36         cout<<endl;
37     }
38     return 0;
39 }

 

posted @ 2022-05-04 20:14  江上舟摇  阅读(44)  评论(0编辑  收藏  举报