C语言求从一个数组里挑数出来组合的问题

比如说,给定一个数组{1 2 3 4 5}
求先从里面选任意两个数组合,再从剩下的再选两个数组合,公用几种选发?
最后能输出类似
12 34
12 35
12 45
13 24
.
.
.
我目前只能做到第一次选择
int a[]={1 ,2 ,3 ,4 ,5}, i, j, k,m
for(i=0;i<=3;++i)
for(j=i+1;j<=4;++j)
{
之后第二选择不知道该怎么办,主要是不知道怎么表达还没有选择的数(就是去掉a[i],a[j]之后的a[])

对于会的人应该是个很简单的问题吧?
希望大家帮帮我~谢谢!
谢谢大家的回答~
不过wangqifangf的答案好像是直接5选4,不是我要求的“选2再选2”吧~
song2692005的答案给我有了思路了,不过为什么只强调了k不等于i,j,m不是也应该不等于i,j吗?(还是说我太菜没看懂程序?)

#include <iostream>

using namespace std;

int main(){

 int a[]={1 ,2 ,3 ,4 ,5}, i, j, k,l;

 for(i=0;i<=4;i++)

 {

  for(j=0;j<=4;j++)

  {

      for(k=0;k<=4;k++)

    {

    for(l=0;l<=4;l++)

    {

     if ( i != j && i != k && i != l && j != k && j != l && k != l ){

      cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[l]<<endl;

     }

    }

   }

  }

 }

 system("PAUSE");

}

参考资料:刚跑完

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-25
如果要顺序的话,就是:
#include<stdio.h>
int main()
{
int a[]={1 ,2 ,3 ,4 ,5};
int i,j,k,m;

int count=0;

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(j!=i)
{
for(k=0;k<5;k++)
{
if(k!=i&&k!=j)
{
for(m=0;m<5;m++)
{
if(m!=i&&m!=j&&m!=k)
{
count++;
printf("%d %d %d %d\n",a[i],a[j],a[k],a[m]);
}
}
}
}
}
}
}
printf("there are %d teams.",count);
}

如果不要顺序的话,则是:
#include<stdio.h>
int main()
{
int a[]={1 ,2 ,3 ,4 ,5};
int i,j,k,m;

int count=0;

for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
if(j!=i)
{
for(k=0;k<5;k++)
{
if(k!=i&&k!=j)
{
for(m=k+1;m<5;m++)
{
if(m!=i&&m!=j&&m!=k)
{
count++;
printf("%d %d %d %d\n",a[i],a[j],a[k],a[m]);
}
}
}
}
}
}
}
printf("there are %d teams.",count);
}本回答被提问者采纳
第2个回答  2011-03-25
int a[]={1,2,3,4,5},i,j,k,m;
int number; //此为答案的个数
for(i=0;i<=3;i++)
{
for(j=i+1;j<=4;j++)
{
for(k=0;k<=3;k++)
{
if(k==i || k==j) //排除前两个数
continue;
else
for(m=k+1;m<=4;m++)
number++;
}
}
}

自己码的代码累死了,也是我注册百度以来回答的第一个问题。貌似是对的。LZ看看

参考资料:自己想的

第3个回答  2011-03-25
#include <stdio.h>

int main(int argc, char *argv[])
{
int a[]={1,2,3,4,5};
int i,j,n,m;
int num=0;

for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(n=0;n<5;n++)
for(m=0;m<5;m++)
if(i!=j&&i!=n&&i!=m&&j!=n&&j!=m&&n!=m)
{
printf("%d%d\t%d%d\n",a[i],a[j],a[n],a[m]);
num++;
}
printf("总共的选择数是%d\n",num);
system("pause");
return 0;
}
第4个回答  2011-03-25
把剩下的数复制一个新的数组里啊。
相似回答