zoukankan      html  css  js  c++  java
  • 【JavaScript】7-37 整数分解为若干项之和 (20 分)

    题目:

    将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,…。编程求出正整数N的所有整数分解式子。

    输入格式:

    每个输入包含一个测试用例,即正整数N (0<N≤30)。

    输出格式:

    按递增顺序输出N的所有整数分解式子。递增顺序是指:对于两个分解序列N1​​={,}和N2​​={,},若存在i使得,,但是ni+1​​<mi+1​​,则N1​​序列必定在N2​​序列之前输出。每个式子由小到大相加,式子间用分号隔开,且每输出4个式子后换行。

    输入样例:

    7

    输出样例:

    7=1+1+1+1+1+1+1;7=1+1+1+1+1+2;7=1+1+1+1+3;7=1+1+1+2+2
    7=1+1+1+4;7=1+1+2+3;7=1+1+5;7=1+2+2+2
    7=1+2+4;7=1+3+3;7=1+6;7=2+2+3
    7=2+5;7=3+4;7=7

    JavaScript代码:

     1 const { parse } = require('path')
     2 var readline = require('readline')
     3 
     4 const rl = readline.createInterface({
     5     input: process.stdin,
     6     output: process.stdout
     7 })
     8 
     9 var resArr = []
    10 
    11 rl.on('line', function(line) {
    12     var n = parseInt(line)
    13     fun(n, 1, [], n)
    14     print(n)
    15 })
    16 
    17 function fun(x, b, arr, n) {
    18     if (x <=  0) {
    19         resArr.push(convert(n, arr))
    20         return
    21     }
    22 
    23     for (let i = b; i <= x; i++) {
    24         arr.push(i)
    25         fun(x - i, i, arr, n)
    26         arr.pop()
    27     }
    28 }
    29 
    30 function convert(n, arr) {
    31     let s = '' + n + '=' + arr[0]
    32     for (let i = 1; i < arr.length; i++) {
    33         s += '+' + arr[i]
    34     }
    35     return s
    36 }
    37 
    38 function print(n) {
    39     let res = ''
    40     for (let i = 0; i < resArr.length; i++) {
    41         res += resArr[i]
    42         if (i == resArr.length - 1)
    43             break
    44         if (i % 4 == 3)
    45             res += '
    '
    46         else
    47             res += ';'
    48     }
    49     console.log(res)
    50 }
  • 相关阅读:
    RBAC概念
    Django框架的优缺点
    全文检索whoosh
    软件项目管理|期末复习(九)
    软件项目管理|期末复习(十四)
    HOJX 1003| Mixing Milk
    [转发]ACM刷题网站
    [转发]软件工具|Github上整理的一些工具
    软件项目管理|期末复习(三)
    计算机图形学|两道习题
  • 原文地址:https://www.cnblogs.com/moonskies/p/14467277.html
Copyright © 2011-2022 走看看