C语言:给定3个字符,输入n,求长度为n的所有组合

问题描述

C语言:给定3个字符,输入n,求长度为n的所有组合如给定abc 输入 5,输出aaaaa,abcab 等等

解决方案

#include "stdlib.h"#include "stdio.h"int strpos=0;void makeAry(char *buff,int bufflen, char *res,char *tmp,int tmplen,int pos){int i,j;for(i=0;i<bufflen;i++){tmp[pos]=buff[i];if(pos<tmplen-1){makeAry(buff,bufflen,res,tmp,tmplen,pos+1);}else{for(j=0;j<tmplen;j++){res[strpos*tmplen+j]=tmp[j];}strpos++;}}}int main(int argc, char* argv[]){int i,j;char buff[3];printf("Please input three letter:",buff);gets(buff);char buff2[10];printf("Please input a number:",buff2);gets(buff2);int len = atoi(buff2);long reslen = 3;for(i=0;i<len-1;i++){reslen*=3;}char *res = (char*)malloc(reslen*len);char *tmp = (char*)malloc(len);makeAry(buff,3,res,tmp,len,0);printf("It's %i groups:n",reslen);for(i=0;i<reslen;i++){for(j=0;j<len;j++){printf("%c",res[len*i+j]);}printf("n");}return 0;}
解决方案二:
C31 * 5
解决方案三:
问下, 这三个字符是否可以有相同的?第二个问题:就是输入的n值是否可以比3小,这种情况怎么处理?
解决方案四:
用JAVA 写了个 不知道符不符合你的。因为手边没有C的开发环境。import java.util.ArrayList;import java.io.FileWriter;class Test {public static ArrayList<String> computer(String str,String makeStr,int max,int curTimes){ArrayList<String> lists = new ArrayList<String>();String newStr = makeStr;for(int j=0;j<str.length();j++){newStr += str.charAt(j);int t = curTimes+1;if(curTimes<max){lists.addAll(Test.computer(str,newStr,max,t));}else{lists.add(newStr);}newStr = makeStr;}return lists;}public static void main(String[] args)throws Exception{String str = "abc";int max = 5;ArrayList<String> lists = Test.computer(str,"",max,0); FileWriter f3 = new FileWriter ("file3.txt");StringBuffer sb = new StringBuffer();for(int i=0;i<lists.size();i++){sb.append(lists.get(i)+"rn");}f3.write(sb.toString());f3.close();}}

时间: 2024-10-25 01:22:24

C语言:给定3个字符,输入n,求长度为n的所有组合的相关文章

c语言-C++ CString类型二维数组 求长度

问题描述 C++ CString类型二维数组 求长度 ```CString bb[100][100] = [[a,b,c],[d,e,f],[g,h,i]] 怎么获取里面一维数组长度 3 解决方案 整个遍历一遍呗!否则还有什么好方法吗? 解决方案二: 只能遍历二维数组 然后取对应的长度 解决方案三: 建议使用动态数组,这样浪费栈区内存 解决方案四: sizeof(bb[0]) 解决方案五: 只能遍历了吧--可以写个遍历求长度的函数,调用就行,不过这样太麻烦 推荐使用动态数组,然后用sizeof应

c语言-C语言利用指针来存输入的字符串的问题

问题描述 C语言利用指针来存输入的字符串的问题 这个函数是可以得到str的: #include <ctype.h> char * getword(char * str) { int i; int ch; while ((ch = getchar()) != EOF && !isspace(ch)) *str++ = ch; *str = ''; if (ch == EOF) return NULL; else { while (ch != ' ') ch = getchar()

一个看似简单实则颇有些难度的go语言问题,关于密码输入

问题描述 一个看似简单实则颇有些难度的go语言问题,关于密码输入 RT. 具体要求:输入一串字符(中间可能有各种空格啊符号啊之类)作为密码,以回车键结束 由于是密码,所以输入时屏幕不能明文显示,当每输入一个字符则显示为一个*,最后密码由一个string型变量获取 好像用go语言不是那么好实现,尤其是考虑到退格键以及方向键改变输入顺序的问题(比如输入的时候用方向键将光标前移后插入内容),还有delete键带来的删除效果-- 各位大神有什么好的解决方案?期待最简洁的代码--

c-C语言中用fgets()函数,输入过多会导致程序自动关闭!!

问题描述 C语言中用fgets()函数,输入过多会导致程序自动关闭!! 就是这个代码,只要输入的字符数量超过9,程序就自动关了. #include int main(void) { char name[10]; char name2[100]; char* c; c = fgets(name,9,stdin); // printf("%s%s",name,c); getchar(); getchar(); getchar(); return 0; } 解决方案 不是越界...fgets

C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问题

问题描述 C语言程序设计第二版 1.6数组练习1-13打印输入中单词长度的直方图的问题 /* Note:Your choice is C IDE */ #include "stdio.h" #define MAXHIST 15 //柱状图长度 #define MAXWORD 11 //单词长度 #define IN 1 #define OUT 0 void main() { int c,i,nc,state; int len; int maxvalue; //wl[]的最大值 int

c语言-C语言 给定一个整数序列和一个数k,求这个序列中第k小的数。

问题描述 C语言 给定一个整数序列和一个数k,求这个序列中第k小的数. C语言 给定一个整数序列和一个数k,求这个序列中第k小的数. 我的程序 #include<stdio.h> int n[10000]; void Nok() { int i=0,j=0,t,k,q=0; char c; scanf("%d",&n[i++]); c=getchar(); while(c!='n') { scanf("%d",&n[i++]); c=ge

c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度

问题描述 c++统计用户输入的字符串的空格字符,英文字符,数字个数,其他字符个数以及用户输入字符串的长度 我在统计中文的时候出现了问题,请各位大神指教一下 #include #include using namespace std; int main() { string str; cout << "请输入一个字符串,以换行为结束!n"; getline(cin, str); size_t count = 0; size_t spaceNum=0; size_t lette

c语言-C语言scanf读取单个字符出错

问题描述 C语言scanf读取单个字符出错 { char a; scanf_s("%c", &a); printf("%c", a); } 编译报warning: 警告 C4477 'scanf_s' : format string '%d' requires an argument of type 'int *', but variadic argument 1 has type 'char *' 并且得不到正确的结果. 使用getchar()没有问题,求

visual studio-C语言结构体在VS2013输入时候遇到的问题

问题描述 C语言结构体在VS2013输入时候遇到的问题 IDE:VS2013 OS:Windows7 源码附上: #include<windows.h> #include<stdio.h> int main() { //定义一个People类型的结构体 struct People{ char name[10];//名字 char sex[5];//性别 int age;//年龄 int Class;//班级 }me; //将me声明为People类型的结构体变量 printf(&q