題目是,洗掉相同元素后的陣列元素,數字之間用空格隔開,保證各元素第一次出現的先后次序的一致性。 但在運行時出現runtime error,陣列沒有開得太大,檢查了好多遍,也沒發現什么小錯誤
Sample Input
10
1 1 1 1 1 1 2 2 2 2
Sample Output
1 2
#include <stdio.h>
int main(){
int n,i,j,a[100],b[100],w,count,p=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
count=0;
for(j=i+1;j<n;j++){
if(a[i]==a[j])
count++;
}
if(count==0)
b[p++]=a[i];
}
for(i=0;i<p;i++)
printf("%d ",b[i]);
return 0;
}
uj5u.com熱心網友回復:
請看清楚題意,保證各元素第一次出現的先后次序的一致性,所以有些用例,你這個演算法無法滿足uj5u.com熱心網友回復:
陣列開成100w試試uj5u.com熱心網友回復:
可以用std::set:#include <cstdio>
#include <set>
int main ()
{
int n, x;
std::set<int> s;
scanf("%d", &n);
while (n--)
{
scanf("%d", &x);
auto r = s.insert(x);
if (r.first != s.end() && *r.first == x && r.second)
printf("%d%s", x, n ? " " : "");
}
puts("");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20644.html
標籤:基礎類
上一篇:N皇后問題
