LCR 157. 套餐内商品的排列顺序

news/2024/12/22 21:13:48/

LCR 157. 套餐内商品的排列顺序

某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。

返回结果 无顺序要求,但不能含有重复的元素。

示例 1:

输入:goods = “agew”
输出:[“aegw”,“aewg”,“agew”,“agwe”,“aweg”,“awge”,“eagw”,“eawg”,“egaw”,“egwa”,“ewag”,“ewga”,“gaew”,“gawe”,“geaw”,“gewa”,“gwae”,“gwea”,“waeg”,“wage”,“weag”,“wega”,“wgae”,“wgea”]

这样的题目就是使用深度优先遍历就可以啦,解题代码如下:

/*** Note: The returned array must be malloced, assume caller calls free().*/bool judge(char *s,int nowsize,char ch){if(nowsize==0){return true;}else{for(int i=0;i<nowsize;i++){if(s[i]==ch){return false;}}return true;}}int size;void dfs(char *re,char* goods, int nowsize,int sl,char **ret,int *r){char a[sl];int p=0;if(nowsize==sl){re[nowsize]='\0';//    printf("%s ",re);strcpy(ret[size],re);size++;}else{for(int i=0;goods[i]!='\0';i++){int flag=0;for(int j=0;j<p;j++){if(goods[i]==a[j]){flag=1;break;}}if(flag==1){continue;}if(r[i]==0){a[p++]=goods[i];re[nowsize]=goods[i];r[i]=1;dfs(re,goods,  nowsize+1,sl,ret,r);r[i]=0;}}}}char** goodsOrder(char* goods, int* returnSize) {int sl=strlen(goods);int count=1;int *r=(int *)malloc(sizeof(int)*sl);size=0;for(int i=1;i<=sl;i++){count=count*i;r[i-1]=0;}char *re=(char *)malloc(sizeof(char)*(sl+1));char **ret=(char **)malloc(sizeof(char*)*(count));for(int i=0;i<count;i++){ret[i]=(char *)malloc(sizeof(char )*(sl+1));}dfs(re,goods,  0,sl,ret,r);*returnSize=size;return ret;}

http://www.ppmy.cn/news/1122984.html

相关文章

玩玩“小藤”开发者套件 Atlas 200I DK A2 之VSCode远程连接

玩玩“小藤”开发者套件 Atlas 200I DK A2 之VSCode远程连接 0. 背景1. VSCode 安装 Remote - SSH 插件2. 安装 OpenSSH 组件3. VSCode SSH 连接 Atlas 200I DK A24. 打开远程文件夹 0. 背景 总所周知&#xff0c;英伟达的GPU供不应求&#xff0c;还各种限制。华为推出了升腾A…

Quartus出租车计价器VHDL计费器

名称&#xff1a;出租车计价器VHDL计费器 软件&#xff1a;Quartus 语言&#xff1a;VHDL 要求&#xff1a; 启动键start表示汽车启动&#xff0c;起步价7元&#xff0c;同时路程开始计数&#xff0c;停止键stop表示熄火&#xff0c;车费和路程均为0&#xff0c;当暂停键pa…

JavaScript系列从入门到精通系列第六篇:JavaScrip当中的运算符,主要涉及JavaScript当中的六大数据类型的四则运算

文章目录 前言 一&#xff1a;算数运算符 1&#xff1a;Number类型的四则运算 2&#xff1a;其他数据类型的四则运算 (一)&#xff1a;加法运算 (二)&#xff1a;减法运算 3&#xff1a;乘法运算 4&#xff1a;除法运算 5&#xff1a;取模运算 前言 运算符也叫操作符。…

vscode调试webpack项目的方法

vscode调试webpack项目的方法 首先安装vscode插件Javascript Debugger 这个插件的介绍也写清楚了&#xff1a; An extension for debugging Node.js programs and Chrome. 那就是用来调试Node.js和Chrome的vscode扩展插件&#xff0c;包括typescript. 然后按F5启动调试&…

(GD32单片机写入程序后无反应)GD32单片机内外部晶振切换

以GD32F405RG系列为例&#xff0c;43到54行是库函数提供的内外晶振宏定义。 尾部为IRC的是内部晶振&#xff0c;尾部为HXTAL的是外部晶振。43~54当中只能选择一项作为晶振设置&#xff0c;其他项必须注释掉。 例如我选择的是以IRC结尾的49行&#xff0c;意思是使用GD32的内部晶…

OSI 七层网络协议最全的图

OSI 七层网络协议最全的图 文章出处&#xff1a;https://www.shuzhiduo.com/A/RnJWawowdq/

Django事务确保数据一致性

简介 当处理的数据表存在关联性&#xff0c;我们需要确保关联数据之间的逻辑关系是否正确和完整 最近笔者遇到的场景&#xff1a; B数据关联A&#xff0c;此时需要先创建A数据&#xff0c;再去创建B数据。创建B数据的同时还要进行逻辑处理&#xff08;判断B数据有没有重复&…

磁盘检测工具,根据lba查找对应文件

Q: 磁盘检测工具&#xff0c;如何根据损坏的lba查找对应的文件? 1.运行cmd&#xff0c;输入 fsutil fsinfo ntfsinfo e: 2.从上述结果中找到 "每扇区字节数&#xff08;Bytes Per Sector&#xff09;"、"每个簇字节数&#xff08;Bytes Per Cluster&#xff0…