社区
C#
帖子详情
如何实现一个排列的算法
chenmin0728
2004-04-12 01:00:37
如何实现一个排列的算法(C#语言)
有两个参数sum , k.
例如,当sum=3,k=2.
下列的参数将被输出
1,2
1,3
2,1
2,3
3,1
3,2.
即实现对于给定的sum和k(sum>k) , 找出所有的排列,数字不能重复,必须是有顺序的
组合!
谢谢!
...全文
36
11
打赏
收藏
如何实现一个排列的算法
如何实现一个排列的算法(C#语言) 有两个参数sum , k. 例如,当sum=3,k=2. 下列的参数将被输出 1,2 1,3 2,1 2,3 3,1 3,2. 即实现对于给定的sum和k(sum>k) , 找出所有的排列,数字不能重复,必须是有顺序的 组合! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
athossmth
2004-04-12
打赏
举报
回复
上面是从0开是的,如果从1开始把a[i]=0和a[p]=0这两句0改成1就可以了。
athossmth
2004-04-12
打赏
举报
回复
#define N 5
#define K 3
main()
{
int a[N], p,i,flag;
for(i=0;i<N;i++) a[i]=0;
p=0;
while(p>=0)
{
if(a[p]==N)
{
p--;
a[p]++;
}
else
{
f = 0;
for(i=0;i<p;i++)
if(a[i]==a[p])
{
f=1;
break;
}
if(f==0)
{
if(p==K-1)
{
printf("\n");
for(i=0;i<K;i++) printf("%d", a[i]);
a[p]++;
}
else
{
p++;
a[p] = 0;
}
}
else
a[p]++;
}
}
}
lczddd
2004-04-12
打赏
举报
回复
不行啊,你的这个好像有点难度啊,呵呵
chenmin0728
2004-04-12
打赏
举报
回复
我的意思是从sum个数字中取出任意k个数,进行排列组合,并把每种组合输出来。
例如,sum=9,k=4,即从9个数中任意取4个,有顺序的(1,2,3,4和4,2,3,1)
算两种!
如何把这些结果输出来!
lczddd
2004-04-12
打赏
举报
回复
那就在加一个for语句就搞定了
greatsft
2004-04-12
打赏
举报
回复
for(int i=1;i<=sum;i++)
{
for(int j=1;j<=sum;j++)
{
if(i!=j)
{
System.Console.Write(i+",");
System.Console.Write(j);
System.Console.Write("\r\n");
}
}
}
System.Console.Read();
/////////////////
按照你的说法,这个算法和k是没关系的
wish u good luck
Greatsft
lczddd
2004-04-12
打赏
举报
回复
for(int i=1;i<=sum;i++)
for(int j=1;j<=sum;j++)
{
if(i!=j) textBox1.AppendText((i.ToString() + "," + j.ToString() +"\n" ));
}
lczddd
2004-04-12
打赏
举报
回复
自己修改一下,因改可以了,呵呵
lczddd
2004-04-12
打赏
举报
回复
for(i=1,i++,i<=sum)
for(j=1,j++,j<=sum) {
if(i!=j) print (i + "," + j )
}
chenmin0728
2004-04-12
打赏
举报
回复
是的,k就是每个组合输出的数目!sum是总共有几个数!
smartcreater
2004-04-12
打赏
举报
回复
问题不清白,k在这里有什么含义?(是不是每个组合输出k个数?)
java
实现
排列
组合
算法
java
排列
组合
算法
,
2022-01-07:下
一个
排列
。
实现
获取 下
一个
排列
的函数,
算法
需要将给定数字序列重新
排列
成字典序中下
一个
更大的
排列
(即,组合出下
一个
更大的整数)。 如果不存在下
一个
更大的
排列
,则将数字重新
排列
成
2022-01-07:下
一个
排列
。
实现
获取 下
一个
排列
的函数,
算法
需要将给定数字序列重新
排列
成字典序中下
一个
更大的
排列
(即,组合出下
一个
更大的整数)。 如果不存在下
一个
更大的
排列
,则将数字重新
排列
成最小的
排列
(即升序
排列
)。 必须 原地 修改,只允许使用额外常数空间。 来自力扣31。 答案2022-01-07: 从右往左遍历,遇到降序停止。交换,反序。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。代码如下: package main import ( "fmt" )
C语言-
实现
数学
排列
组合里的
排列
算法
本文将编写
一个
函数
实现
数学
排列
的功能,采用的办法是递归。具体功能如图所示: 一、函数的讲解 1.1 函数的原型 函数的原型:int** Permutation(int* iarr,int size); 将数组的首地址和数组的大小传递进去,函数将返回
一个
二维数组的地址,这个二维数组包含n!个一维数组(n即是size),而每
一个
一维数组又包含size个元素,二维数组的大小为n! * n 1.2 递归的大概思路(如图所示) 假设要数组的大小(size)为4,则要返回
一个
4!* 4大小的二维指针。 二、程序
C语言
实现
排列
组合
c语言
实现
排列
组合
算法
问题
排列
组合是
算法
常用的基本工具,如何在c语言中
实现
排列
组合呢?思路如下: 首先看递归
实现
,由于递归将问题逐级分解,因此相对比较容易理解,但是需要消耗大量的栈空间,如果线程栈空间不够,那么就运行不下去了,而且函数调用开销也比较大。 (1) 全
排列
: 全
排列
表示把集合中元素的所有按照一定的顺序
排列
起来,使用P(n, n) = n!表示n
Java
实现
排列
组合
算法
用Java
实现
排列
算法
: package Sort; import java.util.ArrayList; import java.util.List; public class Arrange { public static void main(String[] args) { Arrange arrange = new Arrange(); List data = new A
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章