首先,宣告一個結構,而結構內容有一個數字,與一個使否有比對過的值:
struct Ans
{
int ansInt;
int isComp;
};
所以只須讀入 n 值,即可宣告一個結構陣列 a[n],存放答案:
struct Ans a[n];
for (i = 0; i < n; i ++)
{
scanf("%d", &m);
a[i].ansInt = m;
a[i].isComp = 0;
}
則也要宣告一個結構陣列 b[n],以接受測試資料,而在比對過程之中,需先將相同位置的數值比對一遍,如有比對成功,則將雙方的 isComp 改成 1,而比對成功的總數值為 A 的值。接著再將 b 內沒比對過的值再與 a 比對,如果有比對成功,也是將雙方的 isComp 改成 1,而比對成功的總數值則為 B 的值:
isZero = 1, A = 0, B = 0;
for (i = 0; i < n; i ++)
{
scanf("%d", &m);
if (m != 0) isZero = 0;
b[i].ansInt = m;
b[i].isComp = 0;
a[i].isComp = 0;
}
for (i = 0; i < n; i ++)
if (a[i].ansInt == b[i].ansInt)
A ++, a[i].isComp = 1, b[i].isComp = 1;
for (i = 0; i < n; i ++)
for (j = 0; j < n; j ++)
{
if (i != j && a[i].isComp == 0 && b[j].isComp == 0 && a[i].ansInt == b[j].ansInt)
B ++, a[i].isComp = 1, b[j].isComp = 1;
}
if (isZero) break;
else printf(" (%d,%d)\n", A, B);
By David.K
p340題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言