試題 B: 平方拆分
本題總分:5 分
【問題描述】
將 2019 拆分爲若干個兩兩不同的完全平方數之和,一共有多少種不同的方
法?
注意交換順序視爲同一種方法,例如 13 2 + 25 2 + 35 2 = 2019 與 13 2 + 35 2 +
25 2 = 2019 視爲同一種方法。
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果爲一
個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。
尷尬,感謝大佬的指正,我還以爲是隻要三位平方數,太馬虎了。
題目上要若干個,需要利用深度搜索進行統計。
這裏值得注意的是,起始位置應該是從1開始,如果從0開始就會造成下列情況:(用題目的例子舉例子)
從0開始深度搜索,會得到 :( 0 , 13 , 25 , 35) 和(13 , 25 , 35)
而從1開始深度搜索,只會得到:(13 , 25 , 35)
這兩種情況因爲沒有具體答案,我個人感覺應該第二種,得到的答案:
答案:26287
public class Main {
int sum;
public Main() {
dfs(2019,1,45);
System.out.println(sum);
}
public void dfs(int num, int min, int max) {
if (num < 0) {
return;
}
if (num == 0) {
sum ++;
return;
}
for (int i = min; i < max; i++) {
dfs(num - i * i, i + 1, max);
}
}
public static void main(String[] args) {
new Main();
}
}