gpt4 book ai didi

java - C 中的排列 - java 代码的端口

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:01 24 4
gpt4 key购买 nike

我有以下 java 代码用于打印出字符串的所有排列。我正在尝试将其转换为 C 代码。然而,由于 C 不支持原生字符串,我在实现时遇到了一些困难。

java代码如下:

import java.io.*;

class permute{

static void permuteString(String begin, String end){

if(end.length() <= 1){
System.out.println(begin+end);
}
else{
for(int i=0; i<end.length(); i++){
String remainString = end.substring(0,i) + end.substring(i+1);
permuteString(begin + end.charAt(i), remainString);

}
}
}

public static void main(String args[])throws Exception{

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
permuteString("",s);
}

}

我(不完整)将其移植到 C 中的尝试如下:-

#include <stdio.h>
#include <string.h>

void permute(char* arr, int beginstart, int beginend, int endstart, int endend){

if(endend-endstart <= 1){
int i=0;
for(i=beginstart; i<=beginend; i++){
printf("%c",arr[i]);
}

for(i=beginend; i<=endend; i++){
printf("%c",arr[i]);
}
}

else{
int i=0;
for(i=0; i<=(endend-endstart); i++){
//HAVING ISSUES IN THIS PART
}
}

}

int main(){

char arr[3]={'a','b','c'};
permute(arr, 0,0,0,3);
return 0;
}

我不清楚用递归调用移植循环的最佳方法。递归中使用了动态字符串连接。我不确定如何用索引来表示它。感谢您的帮助。

最佳答案

如果您实际上不是通过此示例学习 C,那么使用其他人编写的代码会更简单。谷歌搜索 c permute string 显示了一个非常好的算法,就地进行整个排列,因此您不必进行任何内存分配。

参见 http://www.geeksforgeeks.org/write-a-c-program-to-print-all-permutations-of-a-given-string/

关于java - C 中的排列 - java 代码的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39556236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com