【演算法基礎】DFS湊數
從給定的陣列arr中選取一個或多個數能否湊出給定的k?
原始碼
package com.javakk.ex; import java.util.Scanner; /** * @Time 2018年8月29日 下午5:43:06 * @Title { 湊數K } * @Desc { 用給定的一個或多個數能否湊出給定的k } * @Email [email protected] * @Author JavaKK */ public class Ex1 { // 給定的陣列 static int[] a; // 數的個數 static int n; // 給定的k值 static int k; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); scanner.nextLine(); a = new int[n]; for (int i = 0; i < n; i++) { a[i] = scanner.nextInt(); } scanner.nextLine(); k = scanner.nextInt(); if (dfs(0,0)){ System.out.println("Yes"); }else { System.out.println("No"); } } private static boolean dfs(int i, int sum) { if (i == n) return sum == k; if (dfs(i + 1, sum)) return true; if (dfs(i + 1, sum + a[i])) return true; return false; } }
相關推薦
【演算法基礎】DFS湊數
從給定的陣列arr中選取一個或多個數能否湊出給定的k? 原始碼 package com.javakk.ex; import java.util.Scanner; /** * @Ti
【演算法基礎】字串的全排列演算法
題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 這道題是劍指offfer中一道
【演算法基礎】動態規劃解題例項之野營問題
問題描述: 假設你要去野營。你有一個容量為6磅的揹包,需要決定該攜帶下面的哪些東西。其中每樣東西都有相應的價值,價值越大意味著越重要: 水(重3磅,價值10) 書(重1磅,價值3) 食物(重2磅,價值9) 夾克(重2磅,價值5) 相機(重1磅,價值
【演算法基礎】動態規劃的理解
本章是個很有趣的問題,也是難倒很多人的問題,同時這又是個會而不難的問題。 動態規劃的核心邏輯是:將問題分解為子問題。在《演算法圖解》這本書裡,深入淺出得講了遞推公式的推演邏輯,但是在關鍵部分,遞推公式部分,並沒給出邏輯。 整個過程好像是,前面一段道路很平緩,走起來很舒適,但是突然
【演算法基礎】歸併排序的分析
歸併排序也是基本的排序之一,也挺重要的,所以寫這麼一篇部落格總結一下歸併排序的一個特性是,它對N個元素的檔案排序所需要的時間與NlogN成正比,它的缺點是所需需要的空間和N成正比,要克服這個缺點的話,會造成程式碼非常複雜而且開銷巨大。所以如果速度不是主要的問題,而且有足夠的空
【演算法基礎】----貪心演算法的應用之Huffman編碼
1.Huffman樹的基礎概念 路徑:從樹中的一個節點到另一個節點之間的分支構成這兩個節點的路徑。 路徑長度:路徑上分支的數目。 樹的路徑高度:從根到每一個節點的路徑之和。 節點的帶權路徑長度:從該節點到樹根之間的路徑長度與節點上權的乘積。 樹的帶權路徑長度:樹中所有葉節點
【Android基礎】利用Intent在Activity之間傳遞數據
一次 there center ack and block for success display 前言: 上一篇文章給大家聊了Intent的使用方法。怎樣用Intent啟動Activity和隱式Intent。這一篇文章給大家聊聊怎樣利用Intent在Activit
【 js 基礎 】作用域和閉包
代碼 var 垃圾回收器 間接 undefined scrip 運行時 例子 解析 一、編譯過程 常見編譯性語言,在程序代碼執行之前會經歷三個步驟,稱為編譯。 步驟一:分詞或者詞法分析 將由字符組成的字符串分解成有意義的代碼塊,這些代碼塊被稱為詞法單元。 例子: v
【SSH 基礎】淺談Hibernate關系映射(3)
區別 ack 增加 ans 存儲結構 mil pro 映射 方向 繼上篇博客 一對多關聯映射(單向) 上面我們介紹了多對一,我們反過來看一對多不就是多對一嗎?那還用再進行不同的映射嗎?有什麽區別嗎?一對多和多對一映射原理是一致的,存儲是同樣的。也就是生成的數據庫
【Java基礎】RTTI與反射之Java
start auth try dword star sse from tac sed 1 ; Example assembly language program -- 2 ; Author: Karllen 3 ; Date: revised 05/2014
轉載:【Java基礎】InputStream 、 InputStreamReader和BufferedReader
gen 結果 取字符 sys try eight string font buffer 來源:http://blog.csdn.net/zgljl2012/article/details/47267609 在Java中,上述三個類經常用於處理數據流,下面介紹一下三個類的
【 js 基礎 】Javascript “繼承”
一份 類繼承 屬性。 淺拷貝 創建 生成 特殊 並不會 也會 【 js 基礎 】Javascript “繼承” 是時候寫一寫 “繼承”了,為什麽加引號,因為當你閱讀完這篇文章,你會知道,說是 繼承 其實是不準確的。 一、類1、傳統的面向類的語言中的類:類/繼承 描述
【Linux基礎】Linux基礎命令行學習筆記
esc 隱藏 python chm 合並 tree 位置 常用 輸入 絕對路徑:cd /home/python相對路徑:cd Downloads . 表示:當前那路徑..表示:當前路徑的上一層../.. 表示:當前路徑的上二層 沒有...或者以上的 ls: ls 查看當
【 js 基礎 】為什麽 call 比 apply 快?
如果 分享 叠代 [1] get blank 3.4 -a case 這是一個非常有意思的問題。 在看源碼的過程中,總會遇到這樣的寫法: 1 var triggerEvents = function(events, args) { 2 var ev, i
【計算機基礎】主機名,IP,域名,端口,DNS服務器的通俗理解
net 例如 本地 房子 新的 數字 baidu 域名解析 什麽 在很早的時候,世界上只有幾臺計算機,這幾臺計算機的擁有者想互相連接起來以方便聊天約炮,怎麽辦呢?他們給各自的計算機起了一個名字,比如張三,李四,王二,以後他們就通過這個計算機名字來相互連接。這幾個名字可以
【dubbo基礎】dubbo學習過程、使用經驗分享及實現原理簡單介紹
multi spring配置 不同 影響 為什麽 exception 同事 sock services 一、前言 部門去年年中開始各種改造,第一步是模塊服務化,這邊初選dubbo試用在一些非重要模塊上,慢慢引入到一些稍微重要的功能上,半年時間,學習過程及線上使用遇到的些問
【linux基礎】dhcp服務
配置 dhcp 1、修改服務的配置文件:定制功能vi /etc/dhcp/dhcpd.conf option domain-name "linuxxue.top";option domain-name-servers 202.106.0.20;default-lease-time 600;max-le
【linux基礎】samba匿名共享+用戶認證共享
共享 sabma 一、匿名共享1、安裝yum -y install samba* ##安裝samba軟件2、修改配置文件vi /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba
【linux基礎 】vsftpd+本地用戶認證
本地 vsftpd 用戶 1、修改配置文件[[email protected]/* */ ~]# cat /etc/vsftpd/vsftpd.conf anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022
【linux基礎】rpm安裝程序和管理
rpm使用1.了解應用程序應用程序(app):安裝在os上完成特定功能的軟件。應用程序的類型:*.rpm(redhat分支默認軟件格式),*.deb(debian分支默認軟件格式),源代碼(通用的軟件格式,也是生成rpm和deb的基礎),其他自帶安裝程序及免安裝的軟件。用戶程序常用的目錄:/etc,/var/