input:
3
17
15
16
output:
17
51
Not Possible
先利用递归求出全排列,然后对全排列进行转为字符串操作,判断是否被17整除以及是否比上一个result值大,最后得到最大的值,有一个细节是每次存放结果时,如果用int类型的result就不可以,可能是每次调用递归都会重新初始化result,想改的话设置为全局变量就行,也没有必要有返回值,反正代码可改进空间很大。
代码:
import java.util.*;
public class Main
{
public static int[] rearrange(String str[],int pos,int result[]){
//arrage finish
if(pos == str.length-1){
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length;i++){
sb.append(str[i]);
}
String s = sb.toString();
if(Integer.parseInt(s)%17 == 0 && Integer.parseInt(s) > result[0]){
result[0] = Integer.parseInt(s);
}
}else{
//include self
for(int i=pos;i < str.length;i ++){