社区
C语言
帖子详情
耐人寻味的算法问题。
myvicy
2006-11-08 04:19:17
找出从自然数1、2、……、n中任取r个数的所有组合。例如n=5,r=3的所有组合为:
(1)1、2、3 (2)1、2、4 (3)1、2、5
(4)1、3、4 (5)1、3、5 (6)1、4、5
(7)2、3、4 (8)2、3、5 (9)2、4、5
(10)3、4、5
排列中不要出现如 123 132 321这种3个数完全相同的组合。
写个小程序,n和r可以自定,并且列出来的所有组合可以打印出来,或是可以导出文本文件
我考虑是用循环加递归实现。
谁能给出详细的代码?
...全文
500
13
打赏
收藏
耐人寻味的算法问题。
找出从自然数1、2、……、n中任取r个数的所有组合。例如n=5,r=3的所有组合为: (1)1、2、3 (2)1、2、4 (3)1、2、5 (4)1、3、4 (5)1、3、5 (6)1、4、5 (7)2、3、4 (8)2、3、5 (9)2、4、5 (10)3、4、5 排列中不要出现如 123 132 321这种3个数完全相同的组合。 写个小程序,n和r可以自定,并且列出来的所有组合可以打印出来,或是可以导出文本文件 我考虑是用循环加递归实现。 谁能给出详细的代码?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
栗小游
2006-11-10
打赏
举报
回复
就是排列组合呗,呵呵,原来在大学的时候和宿舍的同学一起玩过,想出了很多很多方法,都挺有意思的……
malligator
2006-11-10
打赏
举报
回复
怎么样最后也得定下来的呀
不是有动态分配么??
http://community.csdn.net/Expert/topic/5143/5143758.xml?temp=4.392642E-02
挺拔的劲松
2006-11-10
打赏
举报
回复
找出自然数1,2,3……,n中任取r个数的所有组合。
#include<stdio.h>
#define MAXN 100
int a[MAXN];
void comb(int m, int k)
{
int i,j;
for(i=m;i>=k;i--)
{
a[k]=i;
if(k>1) comb(i-1,k-1);
else
{
for (j=a[0];j>0;j--) printf("%4d",a[j]);
printf("\n");
}
}
}
void main()
{
a[0]=3;
comb(5,3);
}
myvicy
2006-11-10
打赏
举报
回复
楼上的,如果n和r的大小不确定也能两层循环搞定吗?
我是搜索不到,才来问的。
crazy_lazy_pig
2006-11-10
打赏
举报
回复
n久以前 n 多人讨论过了, 有详悉的算法说明, 和原代码, 楼主就不会自己搜一搜?
不用递归, 两层循环足够了.
唐巧
2006-11-08
打赏
举报
回复
来晚了。。。
zhousqy
2006-11-08
打赏
举报
回复
哪里有算法,哪里就有pcboyxhy(-273.15℃)
珍惜生命远离CPP
2006-11-08
打赏
举报
回复
标记一下,明天来做
myvicy
2006-11-08
打赏
举报
回复
pcboyxhy(-273.15℃)
n没有限制的。
cy2005abc
2006-11-08
打赏
举报
回复
看错了,sorry
cy2005abc
2006-11-08
打赏
举报
回复
for(ii=p[n-1]; ii<len; ++ii)改为 for(ii=p[n-1]; ii<=len; ++ii)
pcboyxhy
2006-11-08
打赏
举报
回复
#include <stdio.h>
char used[20]={0};
int len, i, m, p[20];
void output()
{
printf("\n");
for(i=0; i<m; ++i)
printf("%d ", p[i]+1);
}
int pailie(int n)
{
int ii;
if(n==m)
output( );
for(ii=p[n-1]; ii<len; ++ii)
if(!used[ii])
{
used[ii] = 1;
p[n] = ii;
pailie(n+1);
used[ii] = 0;
}
return 0;
}
int main( )
{
int index = 0;
scanf("%d", &len);
scanf("%d", &m);
pailie(0);
}
不知道你要的是不是这个
xdspower
2006-11-08
打赏
举报
回复
自己写吧,这个应该不难的,主要还需要考虑n和r的值是否可以有有效组合,即n>=r
8 皇后求解趣题
该程序:短小精焊,深得递归之妙言简意赅,解决实际
问题
这实际是深度优先递归搜索
算法
,仅100行程序却非常
耐人寻味
。queen8.cpp 为原代码queen8_result.txt 为运行结果
[
算法
]经典程序
算法
问题
经典矩形
问题
生成各种矩阵是竞赛时经常考的一种题目,如何用C语言或C++生成以下形式几种矩阵:第一种矩阵:1 2 9 104 3 8 115 6 7 1216 15 14 13第二种矩阵蛇形)1 2 6 73 5 8 134 9 12 1410 11 15 16第三种矩阵:1 2 3 ...
Dijkstra
算法
入门
Dijkstra
算法
是一种解决最短路径
问题
的经典
算法
,同时也是计算机科学中最有名的
算法
之一。其方法简洁,但蕴藏的思想却很深刻。通过学习 Dijkstra
算法
,既可以掌握分析、解决
问题
的方法,也可以作为进一步学习其它...
在Unity中实现随机Prim迷宫生成
算法
(内含源码)
人们总是对未知充满好奇,迫使他们...优秀的画质,
耐人寻味
的剧情,宣传力度大,题材新颖的游戏能够在前期发展中引来大量的玩家下载游玩,让游戏走的很快,而游戏的玩法性则更能留住玩家的心,让游戏走的更远。 迷...
算法
入门刷题Day1
关注CSDN这么久,也受惠于许多...我认为ALG最具有魅力的地方就在于,在不断刷题的过程当中,会体验到与最初接触
算法
不同的感觉,当然除此之外,有一些在竞赛当中并不常见的
算法
也是很
耐人寻味
的。Internet相关知识。
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章