Array

来源:互联网 发布:求数组最大最小值 编辑:程序博客网 时间:2024/06/05 23:57

1.1 题目描述
Alice 有一个数列ai。
但是她不喜欢这个数列,于是她决定随机交换其中两个数。
Alice 想知道,交换后的数列与原数列相同的数有多少个。请求出所有可能的
值。
1.2 输入格式
第一行一个正整数n,表示Alice 的数列的长度。
第二行n 个正整数,第i 个数表示ai,即交换前的数列的第i 项。
1.3 输出格式
一行若干个严格递增的正整数,用空格隔开,表示交换后的数列与原数列相
同的数的个数。
1.4 样例输入
32
3 3
1.5 样例输出
1 3
1.6 样例解释
交换后可能的数列有2 3 3, 3 2 3, 3 3 2,个数分别是3, 1, 1。
1.7 数据范围
对于100% 的数据,1  n  100; 1  ai  1000。
2

思路

如果交换的两个数相同,相同个数就是n,不相同就是n-2。
var  a:array[1..1000] of longint;  b:array[1..1000] of boolean;  n,i,j:longint;begin  readln(n);  for i:=1 to n do    read(a[i]);  for i:=1 to n-1 do    for j:=i+1 to n do      if a[i]=a[j] then        b[n]:=true      else b[n-2]:=true;  for i:=1 to n do    if b[i] then write(i,' ');end.