输入一个数N整数,每次都可以取一个小于等于这个整数一半的数,把这个数放在N的左边组成一个新
来源:百度知道 编辑:UC知道 时间:2024/06/22 14:48:45
例如 10
110
210
1210
310
1310
410
1410
2410
12410
510
1510
2510
12510
是这样的···10的一半是5
然后列出所有比5小的可能就是 510 410 310 210 110然后小于等于5的一半的又会有1和2 所以再列出这两种
就是1510 2510 同样 小于等于4的一半的是1和2 那么就是1410 2410 以后继续 1310 1210 直到左往右数第一个数是1为止所以综合排列起来就是
10
110
210
1210
310
1310
410
1410
2410
12410
510
1510
2510
12510
当然这个只是10的···要求的是输入N···然后列出所有的可能
拜托楼上的两位题目理解清楚,你们只做了一个层次,这个一看就是要递归的。
因为小于等于10的一半是5,4,3,2,1,所以510,410,310,210,110,因为5的一半是2,1,所以2510,1510,因为2的一半是1,所以12510,
每个数字都是横向看的。例如12510这个数,1是2的一半,2比5的一半小,5是10的一半,所以满足条件。每一层都要使最后的左添加数为1才结束。
public class Test {
public static void main(String[]args){
Test t = new Test();
Scanner s=new Scanner(System.in);
System.out.println("请输入一个整数:");
int info=s.nextInt();
t.getNum(info,info);
}
public void getNum(int left,int right){
if(left == 1){
return;
}
else{
int temp = left/2;
for(int i=1;i<=temp;i++)
{
String ss=String.valueOf(i);
String str=String.valueOf(right);
System.out.println(ss+str);
int rightTemp = Integer.parseInt(ss + str);
getNum(i,rightTemp);
}
}
}
}
你这个结果有问题吧.既然是小于等于N的一半.
例如 10,那么就是1,2,3,4,5.加到10的左边也只是110,210,310,410,5