poj 1664 放苹果(dfs)
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 30284 | Accepted: 19098 |
Description
Input
Output
Sample Input
1
7 3
Sample Output
8
分析:简单的DFS,可以把问题想象成把一个整数M分解成N个数相加,其中符合加法交换律的是一种情况。为保证不重复(即不会出现加法交换律的情况出现),可以令分解的N个数呈非递增(或非递减)顺序排列,所以下面的递归函数里,有一个参数是前一个数的大小,在本次递归里分配的数要不大于前一个数的大小。
Java AC 代码
import java.util.Scanner;
public class Main {
static int apples;
static int plates;
static int plans;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testNumber = sc.nextInt();
for(int i = 1; i <= testNumber; i++) {
apples = sc.nextInt();
plates = sc.nextInt();
plans = 0;
dfs(apples, plates, apples + 1);
System.out.println(plans);
}
}
/**
*
* @param leftApples 剩余的苹果数
* @param leftPlates 剩余的盘子数
* @param pre 前一个盘子放的苹果数。要保证当前盘子放的苹果数小于前一个盘子放的苹果数,这样可以避免重复(当然也可以把顺序反过来放)
*/
public static void dfs(int leftApples, int leftPlates, int pre) {
if(leftApples == 0 && leftPlates >=0) { //苹果没了,但盘子还有或恰好没有,则方案数加1
plans ++;
return;
}
if(leftPlates <= 0)
return;
for(int i = leftApples; i > 0; i--) {
if(i > pre) //如果当前盘子要放的苹果数大于前一个盘子的苹果数,则跳过
continue;
findPlans(leftApples - i, leftPlates - 1, i);
}
}
}
poj 1664 放苹果(dfs)的更多相关文章
- poj 1664 放苹果(递推)
题目链接:http://poj.org/problem? id=1664 放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- poj 1664 放苹果 递归
题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个 ...
- POJ 1664 放苹果 (递推思想)
原题链接:http://poj.org/problem?id=1664 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n ...
- POJ 1664 放苹果
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24985 Accepted: 15908 Description ...
- poj 1664 放苹果 (划分数)
题意:中文题目,不解释... 题解: 第一种方法是暴力深搜:枚举盘子1~n放苹果数量的所有情况,不需要剪枝:将每次枚举的情况,即每个盘的苹果数量,以字典序排序,然后存进set里 以此去重像" ...
- poj 1664放苹果(递归)
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37377 Accepted: 23016 Description ...
- POJ 1664 放苹果【DFS】
题意:给出n个苹果,m个盘子,问有多少种不同的苹果放置方法 可以把它抽象为把一个数n,拆分成a1,a2,a3,---,am,使得它们的和为n, 话说这一题是学习的ppt里面的,它的思路就是搜索 搜索条 ...
- POJ 1664 放苹果 (递推)
题目链接:http://poj.org/problem?id=1664 dp[i][j]表示i个盘放j个苹果的方案数,dp[i][j] 可以由 dp[i - 1][j] 和 dp[i][j - i] ...
- OpenJudge/Poj 1664 放苹果
1.链接地址: http://bailian.openjudge.cn/practice/1664 http://poj.org/problem?id=1664 2.题目: 总时间限制: 1000ms ...
随机推荐
- 黑马lavarel教程---7、文件上传
黑马lavarel教程---7.文件上传 一.总结 一句话总结: 在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的. 1.在lavar ...
- spark streaming 1: SparkContex
StreamingContext 和SparkContex的用途是差不多的,作为spark stream的入口,提供配置.生成DStream等功能. 总体来看,spark stream包括如下模块: ...
- 怎样用 Bash 编程:语法和工具
让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...
- 【转】C/C++ 引用作为函数的返回值
转自:https://blog.csdn.net/weixin_40539125/article/details/81410008 这篇文章写的很好: 语法:类型 &函数名(形参列表){ 函数 ...
- 在jsp中出现:Syntax error, insert "Finally" to complete TryStatement错误
在jsp中出现:Syntax error, insert "Finally" to complete TryStatement错误 可能括号不匹配{}
- 11G 新特性之 密码延迟认证
11G 新特性之 密码延迟认证 11G 新特性之 密码延迟认证 Table of Contents 1. 特性简述 2. 特性潜在引发问题 3. 关闭特性 1 特性简述 为了防止用户密码的暴力破解,从 ...
- 下载的管理类MyDownloadManager
import android.content.Intent; import android.net.Uri; import java.io.File; import java.io.FileOutpu ...
- 阶段3 2.Spring_02.程序间耦合_2 编译期依赖
通过maven可以看到这个资源不存在 找到本地仓库,mysql 5.17确实没有jar包 在pom.xml内把版本改成5.16 5.1.6在本地仓库内是完整的版本 运行我们的测试方法 把依赖注释掉 再 ...
- layer的iframe弹框中父子元素的传值
项目中,左侧导航树,右侧是 iframe 嵌套的页面,在右侧页面中又有layer弹框,可以说是有两层 iframe 框架. 所以查询网上的parent什么的方法都不能用.自己摸索的下面的方法: 1.父 ...
- wpf passwordbox控件 光标移到最后
/// <summary> /// 设置光标位置 /// </summary> /// <param name="passwordBox">&l ...