0 0

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

C语言:给定3个字符,输入n,求长度为n的所有组合
如给定abc 输入 5,输出aaaaa,abcab 等等
2013年1月04日 18:02

4个答案 按时间排序 按投票排序

0 0

采纳的答案


#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;
}

2013年1月05日 12:59
0 0

C31 * 5

2013年1月05日 11:02
0 0

问下, 这三个字符是否可以有相同的?
第二个问题:就是输入的n值是否可以比3小,这种情况怎么处理?

2013年1月05日 10:19
0 0

用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)+"\r\n");
		}
		f3.write(sb.toString());
		f3.close();
	}
}

2013年1月05日 00:18

相关推荐

    C语言求两个字符串的最长公共子串

    本文实例讲述了C语言求两个字符串的最长公共子串的方法。分享给大家供大家参考。具体实现方法如下: #include "stdio.h" #include "string.h" #include "stdlib.h" void getCommon(char str1[],char str2[],char * ...

    C语言:bf算法实现串匹配问题

    串匹配问题是计算机科学中一个基本问题,旨在寻找给定字符串在文本中的位置。BF算法、KMP算法和BM算法是解决串匹配问题的三种常见算法,本文将对这三种算法进行详细的分析和实现。 一、BF算法(Brute Force ...

    编辑距离问题 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。

    1. **初始化**:创建一个(m+1)×(n+1)的矩阵,其中m和n分别是字符串A和B的长度。矩阵的第一行和第一列分别表示从空字符串转换到字符串A和B所需的操作数。 2. **递推公式**:对于每个位置(matrix[i][j]),根据当前...

    C语言:PTA题解,剪切粘贴

    ### 知识点三:字符串处理函数 程序使用了多个标准库函数对字符串进行操作。 - `strlen(str)`:计算字符串`str`的长度,不包括终止字符`'\0'`。 - `strcpy(dest, src)`:复制`src`字符串到`dest`,包括终止字符。 ...

    C语言实现输入一个字符串后打印出该字符串中字符的所有排列

    在C语言中,实现输入一个字符串并打印出其所有字符排列的方法涉及到经典的排列组合问题,通常采用递归的方式来解决。这种算法称为全排列(Permutation)算法,它能生成一个集合的所有可能排列。这里我们将详细讲解...

    c语言删除字符串中指定的所有字符

    例如,给定字符串 "hello world" 和指定字符 'l',处理后的结果应为 "heo word"。 ### 二、解析代码结构 #### 1. **头文件导入** ```c #include #include ``` - `#include &lt;stdio.h&gt;`:引入标准输入输出...

    C语言实现字符串截取

    根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...

    c语言代码:计算给定公式的真值表

    - `int getAns0(char expression[N], char variable[N], int loop[N], int h0)`和`int getAns(char expression[N], char variable[N], int loop[N], int h0)`:这两个函数用于计算给定逻辑表达式的值。`getAns0`是...

    以标志字符进行字符串逆转 C语言

    将给定字符串中的最后一个小写字母o左边的字符串内容移到该串的右端,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边。输出处理后的字符串。 如果给定字符串中没有小写字母o,则原样输出给定字符串。...

    字符串计数 C语言实现 ACM习题

    题目要求统计给定字符串集合中不同字符串出现的次数,并且要求能够处理多达10万个字符串的情况。具体而言: - 输入: - 第一行包含一个整数`N` (1 &lt;= N ),表示字符串的数量。 - 接下来`N`行每行包含一个字符串。...

    列出字符串的全部排列组合

    从给定的代码片段来看,该程序旨在生成一个字符串的所有可能排列组合,但代码实现上存在一些问题,例如,函数命名、逻辑结构以及对内存管理的处理方式等,都偏离了标准的C语言编程实践。下面,我们将深入解析标题、...

    C语言实现字符串循环右移

    根据给定的信息,本文将详细解释如何在C语言中实现字符串的循环右移,并通过具体的代码示例来阐述两种不同的实现方法。 ### C语言实现字符串循环右移 #### 背景与目标 在计算机科学中,字符串操作是非常常见的...

    C语言字符串数字提出.zip

    在这个例子中,`extract_numbers`函数会从给定的字符串`str`中提取第一个数字,并将其存储到`result`指向的内存位置。如果字符串中还有其他数字,函数返回`true`,否则返回`false`。 此外,描述中还提到了“C语言之...

    C语言:基于c代码实现的最长上升子序列

    LIS问题是组合数学中的经典问题,简单地说,给定一个有n个整数的序列,求其中最长上升子序列的长度。一个子序列是指从原序列中删除若干元素(也可能不删除)后剩下的元素不改变相对顺序的一组数。上升子序列指的是...

    回文判断_C语言_

    在给定的标题“回文判断_C语言_”中,我们可以理解到这是一个使用C语言编写的程序,它的主要任务是检查一个字符串是否为回文。回文是指一个字符串无论从左向右读还是从右向左读,其字符顺序都保持不变,即正读和反读...

    C语言中字符串的处理函数大全

    strchr - 在一个串中查找给定字符的第一个匹配之处 - **功能**: 查找指定字符在字符串中首次出现的位置。 - **用法**: ```c char* strchr(char* str, char c); ``` - **参数**: - `str`: 待搜索的字符串指针。 ...

    C语言字符串函数大全

    strchr函数用来在一个字符串中查找给定字符的第一个匹配之处。其函数原型为char *strchr(char *str, char c);其中str是目标字符串,c是要查找的字符。函数返回值为目标字符串中该字符的地址,如果未找到则返回NULL。...

    c用c语言编写一个函数,连接两个字符串

    根据给定的信息,我们可以深入探讨如何在C语言中实现字符串的连接功能。下面将详细介绍几种不同的方法,并对每种方法的实现原理、优缺点进行分析。 ### 方法一:使用自定义函数实现 #### 代码示例 ```c #include ...

    C语言中常用的字符串处理函数

    在C语言中,字符串处理是编程中非常常见且重要的任务之一。C语言提供了一系列内置的字符串处理函数,这些函数能够帮助开发者高效地进行字符串的创建、复制、比较、搜索、修改等操作。以下是对给定文件中提到的常用...

    分别计算字符串中字母、数字及其他字符的数目

    代码区开始时,程序初始化了这三个计数器为0。然后,它调用`output`函数输出提示信息,让用户输入字符串。`input`函数负责读取最多80个字符的输入,并将其存储到`string`中。 接下来,程序使用了一个循环来遍历输入...

Global site tag (gtag.js) - Google Analytics