读取一个字符串,并输出它里面字符的所有组合
来源:互联网 发布:淘宝模特拍摄的业务 编辑:程序博客网 时间:2024/06/07 08:01
这个是《C 专家编程》P278的第一题,下面是我写的C语言解答。 (MinGW/ gcc v4.8.1 -std=c11)
#include <stdio.h>#include <string.h>#include <stdlib.h>char **npr(char **, char);int fac(int);int main(int argc, char *argv[]){if(argc>1){char *str = argv[1];int len = strlen(str);char *init_arr = malloc(2);*init_arr = str[0];*(init_arr+1) = '\0';char **arr = &init_arr;int n=1;while(n<len){//迭代arr = npr(arr, *(str+n));n++;}for(int i=0;i<fac(len);i++)printf("%%%s\n",arr[i]);// 打印}return 0;}char **npr(char **arr, char c){//B版选修2-3排列公式int len0 = strlen(*arr);int len1 = len0+1;int npr0 = fac(len0);int npr1 = fac(len1);char **strarrp = malloc(sizeof(char**)*npr1);for(int i=0;i<npr1;i++)strarrp[i]=malloc(strlen(*arr)+2);for(int i=0;i<npr0;i++){for(int j=0;j<len1;j++){char *curr = strarrp[i*len1+j];strcpy(curr,arr[i]);int k=len0;while(k>j){*(curr+k) = *(curr+k-1);k--;}*(curr+j) = c;//插入*(curr+len1) = '\0';}}free(arr);return strarrp;}int fac(int n){switch(n){case 0: return 1;case 1: return 1;default: return n*fac(n-1);}}
0 0
- 读取一个字符串,输出它里面字符的所有组合
- 读取一个字符串,并输出它里面字符的所有组合
- 给一个字符串(包含重复字符),打印它的所有可能的组合。
- 用lua实现一个效果,输入一个字符串,输出该字符串中所有的字符组合
- 已知一个字符串,输出它包含字符的所有排列(permutations)
- 输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合
- 输入一个字符串,输出该字符串中字符的所有组合。(腾讯2014笔试附加题)
- 输入一个字符串,输出该字符串中字符的所有组合
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合
- 算法笔试题(四):输入一个字符串,输出该字符串中字符的所有组合
- 从文件读取字符串,并求出该字符串包含的字符集中所有字符的全部组合
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。
- 输出该字符串中字符的所有组合
- 输出该字符串中字符的所有组合
- 打印一个字符串里面所有的字符出现的次数
- ExtJs+JSP构造动态树
- 用webstorm开发nodejs
- myEclipse 8.6.1安装freemarker插件
- codeforces 547A 548C
- 2007年北京大学计算机研究生机试真题 二叉树
- 读取一个字符串,并输出它里面字符的所有组合
- 我们可能安全地边过马路边玩手机吗?
- 【转载】Android 软件开发之数据的 新建 储存 读取 删除 详解(十四)
- Qt X Error: BadAccess提示
- java 中javax.swing.timer类的初步使用
- 黑马程序员——反射
- android webview设置自适应任意大小的pc网页
- float double diff
- 集合collections(Arrays,aList,toArray) 高级for循环 可变参数 静态导入