yz454170989 2015-04-15 12:33 采纳率: 52.6%
浏览 1825
已采纳

新手求教 1-n个数 k个不同的数一组 输出所有可能

这是我编的,基本可以全部列举,但输出的时候相同头尾的多组第1和第k个数只输出一次(例如1开头5结尾:输出1 23 24 34 5 我想输出1 2 3 5 , 1 2 4 5, 1 3 4 5)怎么办用的递归
函数第一个形参是每组数的数量 上例为5
#include
#include
int ii;
int iii;
int bbb(int n,int i, int j, int k,int a[])
{
for(int iii=i; iii<k; iii++)
{
printf("%d ",a[j]);
printf("%d ",a[iii]);
printf("%d,\n",a[k]);
}
// printf("@i=%d,j=%d,@",i,j);
return 0;
}
int aaa(int i/*每组数的数量*/,int j/*头标记*/,int k/*尾标记*/,int n/*, int m */,int a[])//计算插值基函数系数
{
if(j == k)
k=j+i-1;
if(i == 0)
return 1;
else if (i == 1 && k<=n-1)
{
printf("%d,",a[j]);
printf("k=%d,j=%d,\n",k,j);
aaa(i, j+1, k+1, n, a);
}
else if (i == 2 && k<=n-1)
{

//  printf("2k=%d,j=%d,",k,j);
    printf("%d ",a[j]);
    printf("%d,\n",a[k]);
    k++;
    if(k > n-1)
    {
        j++;
        k = j+i-1;
    }
    aaa(i, j, k, n, a);
}
else if (i == 3 && k<=n-1)
{

    //printf("3k=%d,j=%d,",k,j);

    bbb(i,j+1,j,k,a);

    k++;
    if(k > n-1)
    {
        j++;
        k = j+i-1;
    }
    aaa(i, j, k, n, a);
}
else if(i > 3 && k<=n-1)
{
    //printf("4.1k=%d,j=%d,I=%d\n",k,j,i);
    printf("{%d \n",a[j]);
    aaa(i-2,j+1,k-1,k,a);
    printf("%d},\n",a[k]);

    k++;
//  printf("4k=%d\n",k);
    if(k > n-1)
    {
        j++;
        k = j+i-1;
    }
//  printf("4.2k=%d,j=%d,n=%d,\n",k,j,n);
    aaa(i, j, k, n, a);
}

}

int main()
{
int a[10]={0};
for(int i=0; i<10; i++)
a[i]= i+1;
for(i=0; i<10; i++)
printf("i=%d",a[i]);
printf("\n");
int n = 6;
aaa(4,0,0,n,a);

return 0;

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2015-04-15 17:36
    关注

    在你的结果输出的时候再加上一个判断,把重复的过滤掉

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序