串中取3個不重複字母

串中取3個不重複字母
/*
從標準輸入讀入一個由字母構成的串(不大於30個字符)。
從該串中取出3個不重複的字符,求所有的取法。
取出的字符,要求按字母升序排列成一個串。
不同的取法輸出順序可以不考慮。
*/
#include
#define N 30
using namespace std;
void main()
{
 char a[N];//存儲字符串
 char b[N*N*N][3];//存儲取出的3個不重複字母
 int count=0;//記錄輸入字符的總數
 int num=0;//記錄取出的3個不同字母的總條數
 int i,j,k;//搜索變量
 cin>>a;
 //求輸入的字母數
 for(i=0;i<N-1;i++)
 {
  if(a[i]!='\0')
   count=count+1;
  else
   break;
 }
 //取3個不重複的字母
 for(i=0;i<count-2;i++)
  for(j=1;j<count-1;j++)
   for(k=2;k<count;k++)
    if(a[i]<a[j]&&a[j]<a[k])
    {
     b[num][0]=a[i];
     b[num][1]=a[j];
     b[num][2]=a[k];
     num=num+1;
    }
 //去除相同的串
 for(i=0;i<num-1;i++)
  for(j=i+1;j<num;j++)
   if(b[i][0]==b[j][0]&&b[i][1]==b[j][1]&&b[i][2]==b[j][2])
    b[j][0]='\0';
 //打印串
 for (i=0;i<num;i++)
  if(b[i][0]!='\0')
   cout<<b[i][0]<<b[i][1]<<b[i][2]<<endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章