当前位置:   article > 正文

Java B组蓝桥杯第十届国赛:平方拆分_蓝桥杯国赛题 平方拆分 动态规划

蓝桥杯国赛题 平方拆分 动态规划

试题 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

  1. public class Main {
  2. int sum;
  3. public Main() {
  4. dfs(2019,1,45);
  5. System.out.println(sum);
  6. }
  7. public void dfs(int num, int min, int max) {
  8. if (num < 0) {
  9. return;
  10. }
  11. if (num == 0) {
  12. sum ++;
  13. return;
  14. }
  15. for (int i = min; i < max; i++) {
  16. dfs(num - i * i, i + 1, max);
  17. }
  18. }
  19. public static void main(String[] args) {
  20. new Main();
  21. }
  22. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48320
推荐阅读
相关标签
  

闽ICP备14008679号