【结论】Array
Array
題目大意:
有一個數列,隨機交換兩個數,原數列和當前數列相同部分有可能有多少個
原題:
題目描述
Alice 有一個數列 ai。
但是她不喜歡這個數列,于是她決定隨機交換其中兩個數。
Alice 想知道,交換后的數列與原數列相同的數有多少個。請求出所有可能的
值。
輸入
第一行一個正整數 n,表示 Alice 的數列的長度。第二行 n 個正整數,第 i 個數表示 ai,即交換前 的數列的第 i 項。
輸出
一行若干個嚴格遞增的 正整數,用空格隔開,表示交換后的數列與原數列相
同的數的個數。
輸入樣例
3 2 3 3輸出樣例
1 3說明
樣例解釋
交換后可能的數列有 2 3 3, 3 2 3, 3 3 2,個數分別是 3, 1, 1
對于 100% 的數據,1 ≤ n ≤ 100, 1 ≤ ai ≤ 1000。
解題思路:
交換兩個數,只可能改變兩個數,所以要不有n-2個,要不有n個,當沒有不同的數的時候,沒有n-2,當沒有相同的數的時候,沒有n
代碼:
#include<cstdio> using namespace std; int n,p1,p2,num,sum,a[105]; int main() {scanf("%d",&n);scanf("%d",&a[1]);for (int i=2;i<=n;++i){scanf("%d",&a[i]);if (a[i]!=a[1])//判斷是否有不同的p1=1;if (p2) continue;for (int j=1;j<i;++j)//判斷是否有相同的if (a[i]==a[j]){p2=1;break;}}if (p1&&p2) printf("%d %d",n-2,n);//分三種情況if (p1&&!p2) printf("%d",n-2);if (!p1&&p2||n==1) printf("%d",n); }總結
- 上一篇: cad制图电脑配置推荐(cad什么电脑配
- 下一篇: 【模拟】Biotech