//2017.3输入给定长度一串整数,用括号括起来的形式输出这些整数两两组合且不重复的二元组。
//思路,第一步建立这些整数组成的所有二元组。
//第二步,将重复的二元组去掉,设置一个访问标记vi用来记录该二元组是否已经被访问过。
//两种方法:1,用结构体,存储二元组。2,用二元数组存储二元组。我们先试用后者。
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
long int i=0,j,n=0,t=0,x,a[10]={0};
cout<<"put in your number:";
cin>>x;
//现对输入的整数串进行提取,找出其中包含的整数。
while(x>0)
{
a[i++]=x%10;
x=x/10;
n++;
}
for(i=0;i<n;i++)
cout<<a[i]<<endl;
int vis[10][10]={0};//存储数组标记,没有输出过则输出。
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(vis[a[i]][a[j]]==0)
{vis[a[i]][a[j]]=1;//标记已经输出过了。
if(t++==5) {cout<<endl;t=t%5;}
cout<<"("<<a[i]<<","<<a[j]<<")"<<" ";
}//输出没输出过的二元组。
return 0;
}