F : ZQW的消消乐
比赛链接:http://oj.nyist.me/OJ/contest_problemset.php?cid=1036&showmsg=1题目描述
ZQW有一个长度为n的序列,ZQW想移除里面的重复元素,但是ZQW想是对于每种元素保留最后出现的那个。ZQW遇到了困难,希望你来帮助他。
输入
输入包括两行:输入数据有多组。第一行为序列长度n(1 ≤ n ≤ 50) 第二行为n个数sequence[i](1 ≤ sequence[i] ≤ 1000),以空格分隔
输出
输出消除重复元素之后的序列,以空格分隔,行末无空格!!!!
样例输入
复制
9 100 100 100 99 99 99 100 100 100
样例输出
复制
99 100
提示
无
哈哈哈,这道题我的做法好像有点与众不同,
不过我觉得挺好的,因为感觉没有别人用这种方法,应该没有吧。。
反正我不管这就是我的。
感觉自己是个天才,哈哈哈哈哈哈!!!
仰天长笑3分钟。
好吧,虽然这题很水但是我还是要讲我的思路,
你不想看我也要讲,哈哈。
我是把重复的数字都变成0,然后开一个数组,把数据中不是0的数字存进这个数组中,最后再输出。
哎呀,好像有点麻烦的样子,但是我觉得这样比较不容易出错。对,就是这样!!!!
代码如下:
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int a[1050],b[50]={0}; int main() { int t,i,j; while(~scanf("%d",&t)) { for(i=0; i<t; i++) scanf("%d",&a[i]); for(i=t-1; i>=0; i--) { if(a[i]!=0) { for(j=i-1; j>=0; j--) { if(a[j]==a[i]) a[j]=0; } } } int d=0; for(int i=0; i<t; i++) { if(a[i]!=0) b[d++]=a[i]; } printf("%d",b[0]); for(int i=1; i<d; i++) printf(" %d",b[i]); printf("\n"); } return 0; }