分裂的奶牛群(洛谷P2907题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
分裂的奶牛群(洛谷P2907题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P2907題目鏈接
分析
奶牛群分流,假設牛群有n頭牛,能分,二者差k頭,則分別為:
- (num-limit)/2
- (num+limit)/2
分流條件:
- (num-limit)>0,因為有牛才能分裂。
- (num-limit)&1==0,即n-k是偶數,不是偶數沒法除以2。
求解需要寫遞歸的DFS程序。
由于我們要求的是最終幾堆牛吃草,所以不能分裂(不滿足前面提到的條件),就返回1。
在滿足條件可以分裂的時候就需要return dfs((num-limit)/2) + dfs((num+limit)/2);,分別求兩堆分開的牛最終能分成幾堆。
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {private static long limit;private static long dfs(long num) {if (num > limit && ((num-limit)&1)==0) {return dfs((num-limit)/2) + dfs((num+limit)/2);}return 1;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);long num = scanner.nextLong();limit = scanner.nextLong();scanner.close();System.out.println(dfs(num));}}總結
以上是生活随笔為你收集整理的分裂的奶牛群(洛谷P2907题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管理软件实施(1)——什么是管理软件
- 下一篇: 统计方形++(洛谷P2241题题解,Ja