日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

算法--中兴面试:输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数, 使其和等于 m

發(fā)布時間:2025/3/20 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法--中兴面试:输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数, 使其和等于 m 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載請注明原文出處:http://blog.csdn.net/baidu_37107022/article/details/75125846

Q題目

編程求解

輸入兩個整數(shù) n 和 m,從數(shù)列1,2,3…….n 中隨意取幾個數(shù), 使其和等于 m ,要求將其中所有的可能組合列出來.


Answer解法

這道題就是一道典型的動態(tài)規(guī)劃問題了,思路和背包問題差不多,m就相當(dāng)于背包能容納的重量了,就是從右往左校驗,通過m,以及m-n進(jìn)行下一次計算。

2.1 邏輯分析

  • 首先判斷,如果n>m,則n中大于m的數(shù)不可能參與組合,此時置n = m;

  • 將最大數(shù)n加入且n == m,則滿足條件,直接輸出;

  • 將n分兩種情況求解

    (1)n沒有加入,取n = n-1; m = m;遞歸下去
    (2)n加入,取n = n-1, m = m-n,遞歸下去

  • 當(dāng)前是 : printList( m , n )

    遞歸下一層是 : printList( m , n-1 ) 和 printList( m-n , n-1 )

    printList(m,n)=printList(m,n?1)+printList(m?n,n?1)

    終止條件:n<=0,以及m<0(m<0說明在上一次遞歸調(diào)用是減的n,結(jié)果減多了,所以為負(fù)),m==0時候說明正好找到,打印

    2.2代碼實現(xiàn)

    package 中興面試;import java.util.ArrayList; import java.util.List;/*** 2010 年中興面試題 編程求解: 輸入兩個整數(shù) n 和 m,從數(shù)列1,2,3.......n 中隨意取幾個數(shù), 使其和等于 m* ,要求將其中所有的可能組合列出來.*/ public class Test {public static void main(String[] args) {int n = 7;int m = 8;List<Integer> list = new ArrayList<>();// 1.首先判斷,如果n>m,則n中大于m的數(shù)不可能參與組合,此時置n = m;int up = n > m ? m : n;printList(m, up, list);}/*** * @param m* 要求滿足的和sum* @param n* 取數(shù)的范圍scope* @param list* 每一種滿足條件的組合*/public static void printList(int m, int n, List<Integer> list) {// m=0時,即背包剛好裝滿,打印并退出if (m == 0) {System.out.println(list);return;}// 根據(jù)題意,可知m和n必須為正整數(shù),所以m和n為負(fù)數(shù),或n=0時,直接退出if (n <= 0 || m < 0) {return;}// 拿到上一次計算的結(jié)果listList<Integer> list1 = new ArrayList<Integer>(list);// n沒有加入printList(m, n - 1, list);// n加入list1.add(n);printList(m - n, n - 1, list1);} }

    測試結(jié)果:

    若不懂動態(tài)規(guī)劃算法,可參考http://blog.csdn.net/baidu_37107022/article/details/73188963

    總結(jié)

    以上是生活随笔為你收集整理的算法--中兴面试:输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数, 使其和等于 m的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。