题目描述
给定 N 个整数,每次从中挑选两个整数构成一个二元组,请问共可以构成多少个不同的二元组?
将所有不同的二元组按照字典顺序输出。
输入格式
第一行,一个整数 N。
第二行包含 N 个整数。
输出格式
将所有不同的二元组按照字典顺序输出。
每行输出一个二元组,输出格式为 (a,b)。
数据范围
2≤N≤30,
输入整数取值范围 [1,100]。
样例
输入样例:
3
1 2 3
输出样例:
(1,2)
(1,3)
(2,1)
(2,3)
(3,1)
(3,2)
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=35;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1); // 将a[n]排序
for(int i=1;i<=n;i++)
{
if(a[i]!=a[i-1]) // 如果该数字没有被输出过
for(int j=1;j<=n;j++)
if(i!=j && a[j]!=a[j+1]) // 如果i和j位置不同或a[j]和a[j+1]不同
printf("(%d,%d)\n",a[i],a[j]);
}
return 0;
}