Faw*_*kes 5 java combinations permutation
假设有一个 string s=abcd
我想包括第五串a,b,c,d,这是adbc.但我也得到了我不需要的所有答案.
那么如何在第5次执行后停止此方法呢?
import java.util.Arrays;
import java.util.Scanner;
class Test{
long times;
int n=1;
public static void main(String[] args) {
Test tm=new Test();
Scanner in=new Scanner(System.in);
int t=Integer.parseInt(in.nextLine());
while(t!=0){
String s=in.nextLine();
char ch[]=s.toCharArray();
Arrays.sort(ch);
String sort=String.valueOf(ch);
String ans;
long n=Long.parseLong(in.nextLine());
tm.times=n;
tm.permu("",sort);
t--;
}
}
private void permu(String prefix,String str) {
int len=str.length();
if(len==0){
if(n==times){
System.out.println(prefix);
}
else{
n++;
}
}
else{
for(int i=0;i<len;i++){
permu(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, len));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
其次是有任何网站,我可以阅读有关排列,组合和概率的计算和发现排列,组合和概率......对于编码的东西不是为了数学的东西..我知道如何数学解决但我不能编码它..无法为它编写逻辑.
n在运行检查并在递归中打印结果后,您不会进行更改。这就是为什么你打印之后的所有内容adbc。
如果您在检查时使用此代码:
if (n == times) {
System.out.println(prefix);
n = -1;
} else {
if (n > -1)
n++;
}
Run Code Online (Sandbox Code Playgroud)
那么你只能n == times为真一次,那就是prefixis adbc。
解决方案的测试示例:
如果你想停止一个没有返回值的方法(void在方法签名中有返回值类型),那么调用return;将退出该方法......但这里不需要它。