1269: 划分数(Java)
WUSTOJ 1269: 划分数
参考博客
题目
将 1 个数 n 分成 m 份,求划分的种数。更多内容点击标题。
分析
唯一需要注意的地方是不考虑顺序。其他的直接看代码即可。
代码
/**
* 用时:1320ms
* @author PengHao
* @version A1.0
* @date 2019年4月18日 下午9:40:56
*/
import java.util.Scanner;
public class Main {
private Scanner sc;
private int n, m; // 整数n,分成m份
private int count; // 种数
public Main() {
sc = new Scanner(System.in);
while (sc.hasNext()) {
n = sc.nextInt();
m = sc.nextInt();
count = 0; // 计数
divide(n, m, 1);
System.out.println(count);
}
sc.close();
}
/**
* 划分
*
* @param a 整数
* @param b 分成b份
* @param min 本次划分最小取值
*/
private void divide(int a, int b, int min) {
int max = a / b; // 本次划分的最大值
// i表示本次划分的数
for (int i = min; i <= max; i++) {
if (2 == b) {
count++; // 这是最后一次划分,直接加1
continue; // 进入循环
}
divide(a - i, b - 1, i); // 继续划分下一层
}
}
public static void main(String[] args) {
new Main();
}
}
看完了?别嘚瑟。注意到用时没?用了1320ms。妈耶,一看不对劲,然后就搜到了参考博客,于是就用Java写了一遍(相对于【果7的博客】做了部分改进)。
这个题是有递推公式的:count[i][j] = count[i - 1][j - 1] + count[i - j][j]
。代码如下:
/**
* 用时:296ms
* @author PengHao
* @version A2.1
* @date 2019年4月18日 下午11:49:47
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] count = new int[201][7];
count[1][1] = 1;
int min;
for (int i = 2; i <= 200; i++) {
min = i < 6 ? i : 6;
for (int j = 1; j <= min; j++) {
count[i][j] = count[i - 1][j - 1] + count[i - j][j];
}
}
int n, m;
while (sc.hasNext()) {
n = sc.nextInt();
m = sc.nextInt();
System.out.println(count[n][m]);
}
sc.close();
}
}
代码补充
- Java申请空间之后,会有默认值的,
int
的默认值为0
,因此不用像C/C++
那样赋值为0
。 - 此代码全部都写在了
main
方法里面了,因为构造方法是有点占时间的。(不是我的习惯,我比较喜欢分开。) - Java调用方法也是占时间的,取小方法
Math.min(int a, int b)
还是不用的好,毕竟此处的三目运算符也是很容易理解的。
1269: 划分数(Java)的更多相关文章
- JVM性能调优实践——JVM篇
前言 在遇到实际性能问题时,除了关注系统性能指标.还要结合应用程序的系统的日志.堆栈信息.GClog.threaddump等数据进行问题分析和定位.关于性能指标分析可以参考前一篇JVM性能调优实践-- ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- [Java编程思想-学习笔记]第4章 控制执行流程
4.1 return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ...
- android布局太深导致的 java.lang.StackOverflowError
E/AndroidRuntime( 1900): java.lang.StackOverflowError E/AndroidRuntime( 1900): at android.graphi ...
- Java和Flex整合报错(五)
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行
1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用 ...
- 20155207王雪纯 2016-2017-2 《Java程序设计》第六周学习总结
20155207 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第10章 输入/输出 10.1 InputStream与OutputStream 10.1. ...
- 20155207 2016-2017-2 《Java程序设计》第九周学习总结
20155207 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立 ...
- 20155207 2016-2017-2 《Java程序设计》第七周学习总结
20155207 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第13章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 格林威治时间(GM ...
随机推荐
- (转)hive调优(1) coding调优
hive 调优(一)coding调优 本人认为hive是很好的工具,目前支持mr,tez,spark执行引擎,有些大公司原来封装的sparksql,开发py脚本,但是目前hive支持spark引擎(不 ...
- wx.navigateTo的url不生效的问题
比如我要要从index页面跳转到logs. 在跳转的时候应该用switchTab,而不是wx.navigateTo 看api这句话 https://developers.weixin.qq.com/m ...
- mybatis xml中是sql语句报错: Error creating document instance. Cause: org.xml.sax.SAXParseException: The
最近项目折腾了老半天,找了资料才知道是这么回事... 因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为mysql的SQL语句的组成部分,修改如下: 1.在xml的 ...
- Spring和Quartz整合实现定时任务调度
在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...
- windows 家庭版 开启Hyper-V
windows 家庭版无法开启Hyper-V ,建议升级成专业版.
- case设计及验证:入口+页面+展示
测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...
- DELPHI10.3.2安卓SDK安装
DELPHI10.3.2安卓SDK安装 DELPHI10.3.2默认安装以后,还需要安装安卓SDK,才可以编译安卓项目. 1)运行Android Tools 2)勾选安装下面几个
- Matrix学习
package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.ColorMatr ...
- 阿里云RDS与ECS服务器数据库做主从
阿里云RDS与ECS服务器数据库做主从 [精] 里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求.提供稳定.高性 ...
- MySQL中表的复制以及大型数据表的备份教程
MySQL中表的复制以及大型数据表的备份教程 这篇文章主要介绍了MySQL中表的复制以及大型数据表的备份教程,其中大表备份是采用添加触发器增量备份的方法,需要的朋友可以参考下 表复制 mysq ...