顺序表应用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 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16222268.html