• 刷题_CSDN_正整数的连续的加数序列


    import java.util.Scanner;
    
    /**
     * 题目描述:一个正整数可以表示为n(n>2)个连续正整数之和
     * eg: 15 = 1+2+3+4+5; 15 = 4+5+6; 15 = 7+8
     * 根据输入的任意一个正整数,找出 符合这种要求的所有正整数序列
     * 输入数据: 一个正整数
     * 输出数据: 在标准输出上打印出符合题目描述的全部正整数序列,
     * 每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。
     * 如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。
     * 此外,序列不允许重复,序列内的整数用一个空格分隔。
     * 如果没有符合要求的序列,输出“NONE”
     * 解题思路:采用最简单粗暴的穷举法思想O(n*n),一个正整数i可以表示为n(n>2)个连续正整数之和,
     * 那其中最大整数max不超过i/2+1的大小,所以从1开始,往上求和。找到相等的就打印序列
     * @author Administrator
     *
     */
    public class Test {
        public static void print(int n) {
            int max = 1 + n/2;
            boolean flag = false;
            for(int i = 1; i < max; i++) {
                int cur = i;
                for(int j = i + 1; j <= max; j++) {
                    if(cur < n) {
                        cur += j;
                    }
                    if(cur == n) {
                        flag = true;
                        for(int p = i; p <= j; p++) {
                            System.out.print(p + " ");
                        }
                        System.out.println();
                        break;
                    } else if(cur > n) break;
                }        
            }
            if(flag == false) System.out.println("NONE");
        }
        
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入一个正整数");
            int n = in.nextInt();
            print(n);
        }
    }
  • 相关阅读:
    清除浮动的原理剖析
    修正IE6不支持position:fixed的bug(转)
    Callbacks vs Events
    垂直属性
    jQuery的事件模型
    Dean-Edward的事件系统实现
    简单的导航栏实现
    弹窗层效果的实现(非jQuery实现)
    rmdir
    mkdir
  • 原文地址:https://www.cnblogs.com/zzsaf/p/7063708.html
Copyright © 2020-2023  润新知