问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

c语言全排列

发布网友 发布时间:2022-04-22 18:27

我来回答

2个回答

热心网友 时间:2023-09-16 00:14

基本思想是用回溯法来搜索每一种排列
不过楼主对问题的说明不是很详细,所以我只好写个普适性比较大的了
下面这个程序读取一行字符串,然后对该字符串中的所有字符进行全排列输出
注:输入的字符串不要太长,因为不存在能够在短时间内输出全排列的算法
#include <stdio.h>
#include <string.h>
#include <memory.h>
int m;//记录字符串长度
int n;//记录字符串中的字符种类数
char map[256];//记录是哪几种字符
int count[256];//记录每种字符有多少个

void Make_Map(char *str)//统计字符串的相关信息
{
int s[256];
int i;
memset(s,0,sizeof(s));
memset(count,0,sizeof(count));
m=strlen(str);
while(*str)
{
s[*str]++;
str++;
}
n=0;
for (i=0;i<256;i++)
if (s[i])
{
map[n]=i;
count[n]=s[i];
n++;
}
}

int stack[1000];//递归用的栈,并记录当前生成的排列

void Find(int depth)//递归式回溯法生成全排列
{
if (depth==m)
{
int i;
for (i=0;i<depth;i++) putchar(map[stack[i]]);
putchar('\n');
}
else
{
int i;
for (i=0;i<n;i++)
if (count[i])
{
stack[depth]=i;
count[i]--;
Find(depth+1);
count[i]++;
}
}
}

main()
{
char str[1000];
gets(str);
Make_Map(str);
Find(0);
}

热心网友 时间:2023-09-16 00:14

基本思想是用回溯法来搜索每一种排列
不过楼主对问题的说明不是很详细,所以我只好写个
普适性
比较大的了
下面这个
程序
读取一行
字符串
,然后对该字符串中的所有
字符
进行全排列输出
注:输入的字符串不要太长,因为不存在能够在短时间内输出全排列的
算法
#include
<stdio.h>
#include
<string.h>
#include
<memory.h>
int
m;//记录字符串
长度
int
n;//记录字符串中的字符
种类

char
map[256];//记录是哪几种字符
int
count[256];//记录每种字符有多少个
void
Make_Map(char
*str)//统计字符串的相关信息
{
int
s[256];
int
i;
memset(s,0,sizeof(s));
memset(count,0,sizeof(count));
m=strlen(str);
while(*str)
{
s[*str]++;
str++;
}
n=0;
for
(i=0;i<256;i++)
if
(s[i])
{
map[n]=i;
count[n]=s[i];
n++;
}
}
int
stack[1000];//递归用的栈,并记录当前生成的排列
void
Find(int
depth)//递归式回溯法生成全排列
{
if
(depth==m)
{
int
i;
for
(i=0;i<depth;i++)
putchar(map[stack[i]]);
putchar('\n');
}
else
{
int
i;
for
(i=0;i<n;i++)
if
(count[i])
{
stack[depth]=i;
count[i]--;
Find(depth+1);
count[i]++;
}
}
}
main()
{
char
str[1000];
gets(str);
Make_Map(str);
Find(0);
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
幼儿珠心算有那些口诀 儿童免费小学教育网站请推荐几个小学二年级网络教育的网站 高频热处理后,产品的表面质量如何改善? ...2B的外螺纹滚丝后是OK的,但经过热处理与发黑后就有20%止规止不住... 真空热处理后的产品是否需要进一步处理? 教你怎么改变iOS 13充电慢 金铲铲之战 金铲铲s8.5纳尔给什么装备? 英雄联盟双排玩什么英雄英雄联盟中双排哪些英雄配合打套路特别叼金属日... 金铲铲之战 名流纳尔阵容解析 推荐LOL最值得入手最好上分的十大英雄?另外问下兰博还强力吗?_百度知 ... C语言如何实现有重复元素的全排列? 看漫画书的软件哪个最好 可以免费看小说和漫画的软件都有哪些 有什么好用看小说,和看漫画的软件! 什么软件既可以免费看小说又可以看漫画? 有哪些好用免费漫画软件或小说软件 手机上有什么看小说漫画的软件?要能下载的 看动漫小说的软件 有什么软件可以看漫画和小说? 触漫兑换码是什么? 触漫如何找到浴衣 触漫可以用自己的漫画人物素材吗 触漫绑定的手机号怎么解绑? 怎样删除脑洞轻推 触漫不要的素材怎么样删除 触漫怎么删除游览记录 触漫怎么删除脑洞评论? 2007年感动中国十大人物事迹和颁奖词 感动中国人物颁奖词 2008,2009感动中国十大人物颁奖词及事迹 c语言求全排列 C语言的全排列问题!急! C语言全排列问题 C全排列问题 用c语言编写全部排列 C语言,关于全排列问题 c语言中全排列问题 C语言 全排列 求助 C语言 全排列······晕 全排列用C语言实现 C语言 全排列问题 c语言全排列递归问题 c需要怎么实现字符串全排列递归实现 C语言题,输出全排列,写下简单代码,要让初学者看懂 c语言 全排列 全排列公式是什么? 当地震发生时,我们该如何自救? 面山药的做法大全 山药和面条能给宝宝吃吗 铁棍山药刀削面是哪里出的
  • 焦点

最新推荐

猜你喜欢

热门推荐