Scanner in=new Scanner(System.in);
int n=in.nextInt();
int odd=0;
int even=0;
int sum=0;
for (int i=1; i <= n; i++) {
if (i % 2 != 0) {
odd = i;
} else {
even = i;
}
sum += odd - even;
}
System.out.println(sum);
结果不会有-2,只会有0和1。
如果进入循环,至少执行1次,odd=1,even=0,sum=1;如果再次执行,odd不变,even比odd大1,sum清0。如果循环继续,odd比even大1,sum又变1;再继续,even比odd大1,sum清0。结果只会在0和1两者之间变化。即输入奇数,结果为1,输入偶数,结果为0。输入<=1不会进入循环。
所以n是多少?你这都不说能知道就是神了
你输入的是多少
Leetcode 518;medium;
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
package dynamicprogram;
import java.util.Arrays;
public class Main0518零钱兑换的方法数Ⅱ {
public static void main(String[] args) {
System.out.println(new Solution518().change(11, new int[]{1,2,5}));
}
}
class Solution518 {
public int change(int amount, int[] coins) {
int[] dp = new int[amount + 1];
dp[0] = 1;
for (int i = 0; i < coins.length; i++) {
for (int j = 0; j < dp.length; j++) {
if (j - coins[i] >= 0) {
dp[j] += dp[j - coins[i]];
}
}
// System.out.println("当有前" + (i + 1) + "张RMB:" + Arrays.toString(dp));
}
return dp[amount];
}
}
额。。忘说了输入4