
C语言解决排列组合问题 请高手指教
数组a[10]为固定值,一共10个数字,每个元素的值分别为1,1,1,2,2,4,5,3,4,2,另有三个不相关的变量值2,3,4,这三个数字以任意的排列组合加到数组a的...
数组a[10]为固定值,一共10个数字,每个元素的值分别为1,1,1,2,2,4,5,3,4,2,另有三个不相关的变量值2,3,4 ,这三个数字以任意的排列组合加到数组a的某一个或几个元素中(可以全部加到a[1]上,也可以加到a[2],a[3],a[8]上 随意加的),这三个变量只能加一次,得到一个新的数组b,当b组中有3个数值大于6时,输出该数组,求出所有的满足这个条件的数组b。
展开
2个回答
展开全部
#include<stdio.h>
/*
数组a[10]为固定值,一共10个数字,每个元素的值分别为1,1,1,2,2,4,5,3,4,2,
另有三个不相关的变量值2,3,4 ,这三个数字以任意的排列组合加到数组a的某一个
或几个元素中(可以全部加到a[1]上,也可以加到a[2],a[3],a[8]上 随意加的),
这三个变量只能加一次,得到一个新的数组b,当b组中有3个数值大于6时,输出该数组,
求出所有的满足这个条件的数组b。
*/
int main()
{
int a[10]={1,1,1,2,2,4,5,3,4,2};
int b[10];
int i,j,k,t,count;
int x2=2,x3=3,x4=4;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
for(t=0;t<10;t++)
b[t]=a[t];
b[i]=b[i]+x2;
b[j]=b[j]+x3;
b[k]=b[k]+x4;
//下面遍历数组,对大于6的元素进行计数
count=0;
for(t=0;t<10;t++)
{
if(b[t]>6) count++;
}
if(count>=3)
{
for(t=0;t<10;t++)
printf("%d ",b[t]);
printf("\n");
}
}
}
}//3个数加到一个有10个元素的数组中的所有可能
return 0;
}
/*
数组a[10]为固定值,一共10个数字,每个元素的值分别为1,1,1,2,2,4,5,3,4,2,
另有三个不相关的变量值2,3,4 ,这三个数字以任意的排列组合加到数组a的某一个
或几个元素中(可以全部加到a[1]上,也可以加到a[2],a[3],a[8]上 随意加的),
这三个变量只能加一次,得到一个新的数组b,当b组中有3个数值大于6时,输出该数组,
求出所有的满足这个条件的数组b。
*/
int main()
{
int a[10]={1,1,1,2,2,4,5,3,4,2};
int b[10];
int i,j,k,t,count;
int x2=2,x3=3,x4=4;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
for(t=0;t<10;t++)
b[t]=a[t];
b[i]=b[i]+x2;
b[j]=b[j]+x3;
b[k]=b[k]+x4;
//下面遍历数组,对大于6的元素进行计数
count=0;
for(t=0;t<10;t++)
{
if(b[t]>6) count++;
}
if(count>=3)
{
for(t=0;t<10;t++)
printf("%d ",b[t]);
printf("\n");
}
}
}
}//3个数加到一个有10个元素的数组中的所有可能
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询