数的划分(第一篇解题报告)
来源:互联网 发布:奇葩室友 知乎 编辑:程序博客网 时间:2024/06/02 14:45
算法训练 数的划分
时间限制:1.0s 内存限制:256.0MB
问题描述
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入格式
n,k
输出格式
一个整数,即不同的分法
样例输入
7 3
样例输出
4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;}
数据规模和约定
6<n<=200,2<=k<=6
# include <stdio.h>int n,k;int count=0;void f(int num, int cnt, int sum){ if (num == k-1) { if (n-sum >= cnt) count++; return ; } int i; for (i=cnt; i<n; i++) { if (n-(sum+i) < i) return ; f(num+1, i, sum+i); }}int main(){ scanf("%d %d", &n, &k); f(0, 1, 0); printf("%d", count); return 0;}这本是一道动态规划题目,只是限于本人水平不到位,只得用深搜做了出来,话说这算是DFS吧??我对DFS概念的很是模糊。。。由于没有用DP法,所以数据大了效率就明显不高了,下面是网上搜的DP算法:
#include "stdio.h"int main(){ int n,k,g[7][201],i,j; while(scanf("%d%d",&n,&k)!=EOF) { memset(g,0,sizeof(g)); for(j=0;j<=n;j++) g[1][j]=1; for(i=2;i<=k;i++) for(j=0;j<=n-k;j++) { if(j>=i) g[i][j]=g[i-1][j]+g[i][j-i]; else g[i][j]=g[i-1][j]; } printf("%d\n",g[k][n-k]); } return 0;}
做解题报告的目的:一是希望与大家交流交流,闭门造车真是不好的。二是对自己的历程有个见证,也对自己花费了的时间和自己有个交代。。。
与君共勉
0 0
- 数的划分(第一篇解题报告)
- 数的划分解题报告
- zoj1005解题报告---菜鸟的第一篇解题报告
- NOIP 2001数的划分 解题报告(划分型DP)
- 洛谷 1025 数的划分 DP 解题报告
- POJ1247解题报告——我写的第一篇解题报告
- 【codevs1779】 单词的划分 解题报告
- 整数划分解题报告(DP方法)
- 整数划分解题报告
- 【集合划分】解题报告
- 土地划分 解题报告
- 区间第K大数——划分树(POJ2104解题报告)
- 【解题报告】uva562_Dividing coins(划分硬币, dp, 01背包)
- NOIP 2000乘积最大 解题报告(划分型DP)
- 【解题报告】pku数算mooc 第8周 图 我爱北大(poj 4083)
- 【解题报告】pku数算mooc 第8周 图 兔子与星空(poj 5442)
- poj1753解题报告(枚举、组合数)
- hdu 2084 - 数塔(解题报告)
- 喜多网络专业棋牌游戏网狐6603二次开发,棋牌源码出售,价格低样式多,做好付款
- 四组件之BroadcastReceiver
- LA5901 Bird tree
- python 获取当前时间
- 最近做了个论坛,专门给棋牌爱好者免费下载研究用,带工具教程
- 数的划分(第一篇解题报告)
- PHP四种获取文件扩展名方法
- 简明 Vim 练级攻略
- 解决python代理的问题
- 网狐6603很抱歉,游戏房间连接失败,请稍候再试或留意网站公告!
- IIS数据库连接出错的一些解决办法
- 关于网狐6603ewin版抽水问题
- 接水问题(这题可能有点水)
- maven常见问题问答