日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯-未名湖边的烦恼(java)

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯-未名湖边的烦恼(java) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法訓練 未名湖邊的煩惱 時間限制:1.0s 內存限制:256.0MB問題描述每年冬天,北大未名湖上都是滑冰的好地方。北大體育組準備了許多冰鞋,可是人太多了,每天下午收工后,常常一雙冰鞋都不剩。每天早上,租鞋窗口都會排起長龍,假設有還鞋的m個,有需要租鞋的n個。現在的問題是,這些人有多少種排法,可以避免出現體育組沒有冰鞋可租的尷尬場面。(兩個同樣需求的人(比如都是租鞋或都是還鞋)交換位置是同一種排法)輸入格式兩個整數,表示m和n輸出格式一個整數,表示隊伍的排法的方案數。樣例輸入3 2樣例輸出5數據規模和約定m,n∈[0,18]問題分析

解題思路:這是一種類似漢諾塔問題的題目,首先要保證換鞋的人m 多于借鞋的人n。否則,無論怎么排序,都是會出現無鞋可借的尷尬局面。

所以,首先判斷(m>n),否則返回0,表示沒有方法來排序。

package com.sihai.advance;import java.util.Scanner;public class Mominghudeyoushang {public static int fun(int m,int n) { if(m<n) { return 0; } else if (n==0) { return 1; } else return fun(m-1,n)+fun(m,n-1); } public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();int n = scanner.nextInt();System.out.println(fun(m,n));} }

注意:這里的return fun(m-1,n)+fun(m,n-1) 前面的fun(m-1,n)意思是還鞋子的一個人站在最前面,之后剩下的哪些人再接著排序,fun(m,n-1) 意思是借鞋子的人站在最后面,剩下的再接著排序。

下面再看一個例子:

爬樓梯問題:
一段樓梯共n級臺階,每次只能走一級或兩級,問共有多少種走法?列出n=10時的所有走法。

乍看知道問題感覺還是稍顯的有些麻煩,我們這樣子來想,假如 n = 7 時,最后一步是會有f(7) = f(5) + f(6)

得在 n = 1和2的時候,我們得到f(1),f(2)為1

所以,我們到下面的公式

說白了,這個其實就是斐波那契數列

package com.sihai.advance;public class ClimbStairs { public int stairs(int n) { if (n == 1) return 1; if (n == 2) return 2; else { return stairs(n - 1) + stairs(n - 2); } } public static void main(String[] args) { int n = 7; ClimbStairs cs = new ClimbStairs(); int sum = cs.stairs(n); System.out.println(sum); } }

總結

以上是生活随笔為你收集整理的蓝桥杯-未名湖边的烦恼(java)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。