标签:输出 18054 10 int 不同 代码 vis 输入
目录
原题描述
Description
输入10个整数,输出其中不同的数,即如果一个数出现了多次,只输出一次。
输入格式
输入10个整数
输出格式
依次输出不同的数字(一行一个,从上到下依次输出先出现的数)
输入样例
1 2 1 3 3 2 4 5 5 9
输出样例
1
2
3
4
5
9
题目分析
看题目要求感觉就是去重,可以手写代码真正去重。当然,重复的数不输出同样可以达到题目的要求。本题的两种方法都是后一种思想。
代码
代码1(标程):
#include"stdio.h"
main()
{ int a[20];
int i,t,p=0;
for(i=0;i<10;i++)
{ scanf("%d",&a[i]);
for(t=0;t<i;t++)
if(a[t]==a[i])break;
if(t==i)
printf("%d\n", a[i]);
}
}
标程需要遍历两次,时间复杂度有点高。所以我打算用个标记数组,以空间换时间的方法降低复杂度这样遍历一次就可以解决问题。事先预估好答案所输入数字的范围。猜样例应该是一万以内的数字。所以有了代码2。
代码2:
#include <stdio.h>
int main()
{
int s[15]={0},vis[10005]={0},i;//不要想当然以为输入的数字也是限定在10内,所以vis开大点
for(i=1;i<=10;i++)
{
scanf("%d",&s[i]);
if(vis[s[i]]==0)//没有输出过的数才能输出
{
printf("%d\n",s[i]);
vis[s[i]]=1;
}
}
return 0;
}
标签:输出,18054,10,int,不同,代码,vis,输入 来源: https://blog.csdn.net/m0_50517610/article/details/118879158
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。