1.输入一个有符号整数,输出该整数的反转值。
import java.util.Scanner;
public class Main {
public static int reverse(int x) {
int rev = 0;
while (x != 0) {
rev = rev * 10 + x % 10;
x /= 10;
}
return rev;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int input = in.nextInt();
System.out.println(reverse(input));
}
}
2.给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120
public class Main {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
if(n>=120||m>=120)
System.exit(1);
System.out.println(getCount(n,m));
}
//0-1背包问题 f(n,m) 转化为两个子问题 f(n-1,m) 和 f(n-1,m-n)
public static int getCount(int n, int m){
if(m<1 || n<1)
return 0;
int sum=0;
if (n>=m) {
sum+=getCount(m-1, m)+1;
} else {
sum+=getCount(n-1, m);
sum+=getCount(n-1, m-n);
}
/*if(m<n) n=m;
int sum=0;
if(m==n)sum++;
//不选中n
sum+=getCount(n-1,m);
//选中n
sum+=getCount(n-1,m-n);*/
return sum;
}
}
C++编译过程包括预编译->汇编->编译->链接(.exe)
注:代码为网上收集,忘记地址了,就不上了