1.1 題目描述
1.2 解題思路
比較容易的一題,搞清楚平年、閏年的判定規則,就很容易做出來。
1.3 解題**
class solution
totalday += day;
return totalday;
}private int getday(int year, int month) ;
return month == 2 && isleepyear(year) ? datyof12month[month] + 1 : datyof12month[month];
}//是否是閏年 是 29天 ,不是 28天
private boolean isleepyear(int year)
return year % 4 == 0;}}
2.1 題目介紹這裡有 d 個一樣的骰子,每個骰子上都有 f 個面,分別標號為 1, 2, ..., f。
我們約定:擲骰子的得到總點數為各骰子面朝上的數字的總和。
如果需要擲出的總點數為 target,請你計算出有多少種不同的組合情況(所有的組合情況總共有 f^d 種),模 10^9 + 7 後返回。
2.2 解題思路
該題屬於計數型動態規劃
根據題意,設dp[d][target]
是用擲d個骰子,骰子的面數f,得到和為target的方法數。
假設d=3,f=5,target = 19
(1)最後一步:
d[3][19] = d[2][19-1] + d[2][19-2] + d[2][19-3] + d[2][19-4] + d[2][19-5]
由於 d[3][19]初始化為0,所以上面的公式可以簡化為
for (i = 1;i<5;i++)
d[3][19] += d[3-1][19 - i]
(2)初始條件當只有乙個骰子時,有f個面,我們知道獲得x(1<=x<=f)的方法均為1種。
所以
for(i=1;i(3)狀態轉移方程for(i = 2;i<=d;i++)
for(j = 1;j<=target;j++)
for (k = 1;k<=f;k++)
// j>=k
dp[i][j] += d[i-1][j-k]
(4)邊界迴圈結束,i = d,j = target,即到達邊界點,也就求出解。
2.3 解題**
public int numrollstotarget(int d, int f, int target)
//骰子數
leetcode第149場周賽(8 11)
給你乙個按yyyy mm dd格式表示日期的字串date,請你計算並返回該日期是當年的第幾天。通常情況下,我們認為 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此類推。每個月的天數與現行公元紀年法 格里高利歷 一致。class solution object def ord...
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...