网站首页  |  业界新闻  |  技术文章  |  视频教程  |  下载频道  |  程序源码  |  个人空间  |  编程论坛
 
学习型 ASP/PHP/ASP.NET 主机 30元/年 全能 ASP/PHP/ASP.NET 主机,支持月付 专业 MSSQL 数据库空间,支持月付 专业 MySQL 数据库空间,支持月付
发新话题
打印

你的帮助将挽救我信心.....快

你的帮助将挽救我信心.....快

一个集合有m个元素,要输出它的所有的有n个元素的子集
本来是m=5,n=3的,那就比较简单了
#include <stdio.h>
void main()
{
int i,j k;
int a[5];
for(l=0;l<5;l++)
scanf("%d",&a[l]);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(i==j||j==k||i==k)
continue;
else
printf("%d %d %d",a[i],a[j],a[k]);}
}
可后来我要扩展到m,n时,我太笨了,搞不定,大家指导一下

TOP

for(l=0;l<5;l++)
scanf("%d",&a[l]);
你这个是不小心写成大写的呢?
还是l?
用宏定义应该可以解决问题的
我秀我自己

TOP

RE不知道可对

5换成m  3换成n不就行了
一上一上又一上  一上上到高山上

TOP

#include <stdio.h>
void main()
{
int i,j k;
int a[5];
for(l=0;l<5;l++)  //L没定义
scanf("%d",&a[l]);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(i==j||j==k||i==k)
continue;
else
printf("%d %d %d",a[i],a[j],a[k]);}
}

TOP

/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include <iostream>

void comb(int *a,bool *m,int begin,int len,int need)
{
    int sum=0;
    for (int i=0;i<len;i++)if (m[i])sum++;
    if (sum == need)
    {
        for (int i=0;i<len;i++)
            if (m[i])printf("%d ",a[i]);
        printf("\n");
    }
    else
   
{
        for (int i=begin;i<len;i++)
        {
            m[i]=true;
            comb(a,m,i+1,len,need);
            m[i]=false;
        }
    }
}

int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    bool m[10]={0};
    comb(a,m,0,5,3);
}
晕乎,还不能光发代码……
专心编程………
我的Blog……

TOP

不想要版权声明可以把[quote]换下位置
不过那就是盗版。。。
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

我是说,不能只发代码,必须发了代码以后,写几个字……否则论坛就认为你只是引用了别人的话,自己没有发言……
专心编程………
我的Blog……

TOP

快去下面我的帖子报到
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

?哪儿?
专心编程………
我的Blog……

TOP

很久以前!
已经去过了!
我秀我自己

TOP

发新话题