zoukankan      html  css  js  c++  java
  • 编程之法:面试和算法心得(寻找和为定值的多个数)

    内容全部来自编程之法:面试和算法心得一书,实现是自己写的使用的是java

    题目描述

    输入两个整数n和sum,从数列1,2,3.......n 中随意取几个数,使其和等于sum,要求将其中所有的可能组合列出来。

    分析与解法

    解法一

    注意到取n,和不取n个区别即可,考虑是否取第n个数的策略,可以转化为一个只和前n-1个数相关的问题。

    • 如果取第n个数,那么问题就转化为“取前n-1个数使得它们的和为sum-n”,对应的代码语句就是sumOfkNumber(sum - n, n - 1);
    • 如果不取第n个数,那么问题就转化为“取前n-1个数使得他们的和为sum”,对应的代码语句为sumOfkNumber(sum, n - 1)。

    参考代码如下:

    /*
     * 寻找和为定值的多个数
     */
    public class SearchSomeSureValue {
        static int length;
        static void findResult(int n,int m,int flag[]){
            if (n<=0||m<=0) {
                return;
            }
            if (n>m) {
                n=m;
            }
            if (n==m) {
                flag[n-1]=1;
                for (int i = 0; i < length; i++) {
                    if (flag[i]==1) {
                        System.out.print(i+1+" ");
                    }
                    
                }
                System.out.println();
                flag[n-1]=0;
            }
            
            flag[n-1]=1;
            findResult(n-1, m-n, flag);
            
            flag[n-1]=0;        
            findResult(n-1, m, flag);
        }
        public static void main(String[] args) {
            int n=5,m=5;
            length=n;
            int[] flag=new int[n];
            findResult(n, m, flag);
        }
    }
  • 相关阅读:
    [Flux] Component / Views
    [Flux] Stores
    [WebStrom] Change default cmd to Cygwin
    [AngularJS] ng-if vs ng-show
    [ES6] Array.find()
    [ES6] Array.findIndex()
    [Javascript] Object.assign()
    [Javascript] Intro to the Web Audio API
    [Falcor] Indroduce to Model
    [Farcol] Introduce
  • 原文地址:https://www.cnblogs.com/icysnow/p/8269997.html
Copyright © 2011-2022 走看看