這個題目想了很久,演算法是還好,用C++實現演算法花了一堆時間。
簡單說一下這程式的用途,假設輸入 1 1 1 2 3 那麼輸出便會是 1 。
就是找出相同的元素然後輸出就是了。
這程式相當笨重,因為實在是很懶得修,變數也設一堆,想到就寫上去,再加上沒使用函數,導致整個看起來很冗長。 XDD
未來有時間再來嘗試把它函數化吧。
以下提供程式碼。
#include<iostream>
using namespace std;
int main()
{
int n;
cout << "輸入數列長度:"<< endl;
cin >> n;
int A[n];
bool temp[n];
for(int c=1;c<=n;c++)
temp[c] = false;
cout << "請輸入數列:" << endl;
int i=1;
while(i<=n)
{
cin >> A[i];
i++;
}
int a=1,b=1;
while(a<=n)
{
while(b<=n)
{
if(b!=a)
{
if(A[a]==A[b])
{
temp[a] = true;
break;
}
else
b++;
}
else
b++;
}
a++;
b=1;
}
int k=1,e=0;
while(k<=n)
{
if(temp[k]==true)
{
e++;
k++;
}
else
k++;
}
int re[e];
int g=1,f=1;
while(g<=n)
{
if(temp[g]==true)
{
re[f]=A[g];
f++;
g++;
}
else
g++;
}
for(int h=1;h<=e;h++)
{
for(int j=1;j<=e;j++)
{
if(h!=j)
{
if(re[h]==re[j])
{
re[h]=a;
break;
}
}
}
}
for(int l=1;l<=e;l++)
{
if(re[l]!=a)
cout << re[l]<<" ";
}
cout <<endl;
system("pause");
return 0;
}
相當繁雜是吧?
總之有空會嘗試把它修短的。 XDDD
最後再提供程式載點:sequence.exe