題目大意:以遞迴的方式輸出題目描述中的資料方案數。
解題思路:
因為是方案數,所以只需要開乙個計數器統計一下總共有多少方案即可。我們令f(n)
返回數為 n 的時候的方案數,不難得出: \(f(n) = 1 + \sum_^2 \rfloor } f(i)\) 。
但是需要注意乙個細節,我們需要用到備忘錄(或者稱為 記憶化搜尋 )的思想,即,如果我已經統計過了 \(f(n)\) ,那麼我就在統計的同時將結果記錄到乙個輸出 \(cnt[n]\) 中,下次我直接返回 \(cnt[n]\) 即可。
實現**如下:
#include using namespace std;
int a, cnt[1001];
int f(int num)
int main()
題目大意:找出n個數中選k個數,並且這k個數的和是素數的方案數。
解題思路:深度優先搜尋遍歷一下即可。
實現**如下:
#include using namespace std;
bool isp(int a)
int n, k, a[22], cnt;
void dfs(int id, int m, int sum)
if (id > n) return;
dfs(id+1, m, sum);
dfs(id+1, m+1, sum+a[id]);
}int main()
題目大意:給你 n 根火柴,問拿這 n 根火柴能夠拼出多少個不同的等式。
解題思路:開乙個陣列存放每個數對應的火柴棒數量,然後列舉每乙個加數和被加數,看看是不是等式剛好使用了 n 根火柴棒(我自己測了一下加數和被加數最大是712,所以我就列舉到了712)。
實現**如下:
#include using namespace std;
int refn[10] = ;
int get_num(int num)
return ans;
}int n, ans = 0;
int main() }}
cout << ans << endl;
return 0;
}
題目大意:找到區間 \([a,b]\) 範圍內的所有會問質數。
解題思路:
首先考慮列舉區間 \([a,b]\) 內的每乙個數,判斷是否是回文,是否是質數,但是這樣超時了。
然後考慮優化,只判斷奇數,結果還是超時。
然後考慮有陣列存數的每一位(最高 8 位數)以此直接列舉所有的回文數,然後判斷是不是素數並且在 \([a,b]\) 範圍內。
實現**如下:
#include using namespace std;
int t[10], a, b;
int pow10(int a)
int get_num(int pre, int len)
return pre * a + b % a;
}bool isp(int a)
int main()
}return 0;
}
洛谷訓練新手村之「陣列」題解
題目大意 求有多少蘋果樹的高度 le 陶陶的高度 30。解題思路 開陣列存資料,然後迴圈遍歷一遍。實現 如下 include using namespace std int a 11 cnt int main 題目大意 給你若干區間,求有多少點沒有被這些區間覆蓋。解題思路 開乙個 cut 陣列,cu...
洛谷訓練新手村之「順序與分支」題解
題目大意 夏天到了,各家各戶的用電量都增加了許多,相應的電費也交的更多了。小玉家今天收到了乙份電費通知單。小玉看到上面寫 據閩價電 2006 27號規定,月用電量在150千瓦時及以下部分按每千瓦時0.4463元執行,月用電量在151 400千瓦時的部分按每千瓦時0.4663元執行,月用電量在401千...
洛谷新手村的收穫
以下按題目順序排列 for迴圈也可以用在實數中,之前一直以為只能給陣列用 include intmain printf d d return0 判斷相等時用兩個等號在查錯時可用printf 輸出並用getchar 隔斷在判斷多位數每個數字是否與題設相等時,可用 與 將每位取出,存位,賦值再討論 in...