文章目录

  • 题目描述
  • 解析
    • 记忆化搜索
      • 代码
    • 无限背包
      • 代码
  • thanks for reading!

题目描述

解析

很好的题

记忆化搜索

我一开始的思路就是记忆化搜索
为了不重复,搜索的时候规定拆出来一个数A后一会不能再拆比A更小的了
这样就不难写了
(忽略我n^2的素数筛法,反正数据一点点大)
线性筛在这里

代码

#include<bits/stdc++.h>
using namespace std;
const int N=3e6+100;
#define ll long long
int n;
int prime[N],m;
bool sushu(int x){int ans=0;for(int i=1;i<=x;i++){if(x%i==0) ans++;}return ans==2;
}
void solve(){for(int i=2;i<=200;i++){if(sushu(i)) prime[++m]=i;}
}ll dp[250][250];
ll find(int x,int k){if(dp[x][k]) return dp[x][k];if(x==0) return 1;if(x<0||x==1) return 0;ll res=0;for(int j= k;j<=m&&prime[j]<=x;j++){res+=find(x-prime[j],j);}return dp[x][k]=res;
}int main(){solve(); while(scanf("%d",&n)!=EOF){printf("%lld\n",find(n,1));}return 0;
}
/*
12 21 31 40 49 58 69 79 90 101
15
*/

但这并不是最好的做法

无限背包

这题可以转化为:

给你一些数(也就是那些质数),然后问你组合成给定数值的方案数

这就是那个硬币方案的题了
用背包可以非常容易的切掉
而且时间复杂度应该比记搜好(记搜的那个复杂度有点玄。。。)

代码

都说到这份上了还要什么代码
(绝对不是我懒得敲)

thanks for reading!

质数和分解(动态规划)相关推荐

  1. python素数(质数)分解

    python素数(质数)分解 python小白,大佬请忽略- 素数(质数):除了1和和它本身,没有其他的因数的数. 输入整数n,进行素数分解. #素数只能被1和它本身整除,不能再被其它数整除,能被2整 ...

  2. 【数学专题】 筛质数、分解质因数和快速幂

    筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...

  3. python大数快速判断质数与分解质因数

    python 大数质因数分解 数字较小时: def is_prime(number):for i in xrange(2, int(math.sqrt(number))+2):if number %i ...

  4. 用c语言把合数分解质数,合数分解质数之和较好的解法

    合数分解质数之和较好的解法 算法思想,搜索+较强减枝. 小于5000的数据,可于瞬间出解,且保证解的准确性,若无解则输出No answer 程序代码: /* Author: SunKai E-mail ...

  5. 合数分解质数c语言算法,合数分解成质数之和问题探究

    合数分解成质数之和问题探究 1.将一个合数分解成多个质数,使分解的各个质数均不等.它们的和等于该合数,且它们中最大的质数最小 算法:DP,背包问题,复杂度约为O( (N/10)^2 ) 程序代码:#i ...

  6. 动态规划(dp)总结

    问题 T: [动态规划]质数和分解 题目描述 任何大于1的自然数n,都可以写成若干个大于等于2且小于等于n的质数之和的形式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如9 ...

  7. 变种 背包问题_【朝夕的ACM笔记】动态规划-背包问题

    [朝夕的ACM笔记]目录与索引 背包问题 一.0/1背包 1.1 问题描述 有 件物品和一个大小为 的背包,以及若干物品,每种物品只有一件,大小分别为 ,其价值分别为 .问题:将哪些物品装入背包,可使 ...

  8. 编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上

    //编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上 //***本题的难点是既要找出质因数,又要保证其连乘为该数 //***需要两个循环,外循环与内循环 /*每个合数 都可以写成几个 质数 相乘 ...

  9. 验证“歌德巴赫猜想”,即:任意一个大于等于6的偶数均可表示成两个质数之和

    设计一个判断某个数是否质数的函数,函数原型为:int IsPrime (int n) 参数n是被判断的数,若是质数函数返回1,否则函数返回0.设计一个将某数n分解为两个数之和的函数,函数原型为:voi ...

最新文章

  1. 使用Blender中的几何节点创建程序对象
  2. OpenCv 005---图像像素的算术操作
  3. hadoop 2.7 java_Hadoop2.7环境搭建---Java环境变量
  4. 高效代码之strcpy()实现
  5. 用Org-mode实践《奇特的一生》
  6. 黄刘生--数据结构--答案 2
  7. 未能加载nStuff.ScriptSharp.Web.dll
  8. 仿美团外卖小程序源码
  9. 移动通信网中的密码算法演进之完整性保护
  10. 贝叶斯法则的举例分析
  11. Android入门第十四篇之画图
  12. Python二级--命运-3
  13. JVM语言Xtend优缺点速览
  14. 基于大数据的线上线下电商用户数据挖掘研究
  15. 用谷歌浏览器来当手机模拟器
  16. 启动任务管理器两种方法
  17. C语言 strcat 函数 - C语言零基础入门教程
  18. 定时任务与网页去重、代理的使用
  19. 高博十四讲中第六章非线性优化 由于g2o更新出现的问题解决
  20. 通过西部世界来盘点近来人工智能研究的发展

热门文章

  1. JDK安装及java环境配置_JDK安装及Java环境变量配置
  2. jpa 默认生成sql语句_springboot-jpa自动创建数据库表
  3. c语言函数调用二次方程求根,[编程入门]自定义函数求一元二次方程 (C语言代码)...
  4. vue从url中获取token并加入到 请求头里_BATJ都会用到的接口鉴权cookie、session 和token...
  5. oracle未找到时区,Oracle ADF 未找到时区错误
  6. 微型计算机原理计算两数和,微型计算机原理及汇编语言 第2章-2 补码及加减运算.ppt...
  7. php 重定向数据不丢失,PHP重定向如何实现数据不丢失?
  8. vue 调用mutation方法_Vuex白话教程第三讲:Vuex旗下的Mutation
  9. msdn画圆弧函数_画直线不简单!python-matplotlib告诉你为什么
  10. 后端学习 - Redis