public class Exercise { /* * 查找和等于 n 的连续整数序列 * * 以 1,2,3,4,5,6,7,8,9 为例 * 1. 初始 min,max 指向 1,此时 sum 未 1 * 2. 判断 sum 小于 n, max 向后移动: max ++, sum += max; * 3. 判断 sum 大于 n, min 向后移动: sum -= min, min ++; * 4. 若 sum 等于,输入 min 到 max 的整数,并同时将 min,max 向后移动,继续匹配 * 5. 直到 min 大于 n / 2 + 1 * */ public static void main(String[] args) { sum(119); } static void sum(int n) { int min = 1; int max = 1; int sum = 1; // 注意结束条件 while (min <= n / 2 + 1) { if (sum == n) { for (int k = min; k <= max; k++) { System.out.print(k + " , "); } System.out.println(); /* * 这两句的顺序不能改变,应该先减在自增 * */ sum = sum - min; min++; /* * 这两句的顺序不能改变,应该先自增减加 * */ max++; sum = sum + max; } if (sum > n) { /* * 这两句的顺序不能改变 * */ sum = sum - min; min++; } else { /* * 这两句的顺序不能改变 * */ max++; sum = sum + max; } } } }
算法:查找和等于 n 的连续整数序列
最新推荐文章于 2023-03-22 21:36:48 发布