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 ...
随机推荐
- 2019-06-03 校内python模拟题解(所有非原题)
一起来女装吧 本题改编自USACO(USA Computing Olympiad) 1.1节的第一题 (感谢lsy同学对本题题面的贡献) 直接计算就好了 chr:将ASCII码转成字符 ord:字符对 ...
- TCP HTTP SOCKET之间的有什么关系
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
- thymeleaf 直接调用后台Service
前端thymeleaf <select name="sex" class="form-control m-b" th:with="type=${ ...
- Flutter移动电商实战 --(50)持久化_shared_preferences
当app关掉了.再进去的时候 ,购物车的内容还是存在. sqflite提供这个来操作SQLite数据库 flutter提供三种持久化的工具 今天要学的就是 shared_preferences 还有一 ...
- mysql的配置文件解释
1 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效 [mysqld] character_set_server=utf8collation-server=utf8_general ...
- linux设置su和sudo为不需要密码
一 设置sudo为不需要密码 有时候我们只需要执行一条root权限的命令也要su到root,是不是有些不方便?这时可以用sudo代替.默认新建的用户不在sudo组,需要编辑/etc/sudoers ...
- MIPS 指令集(共31条)
MIPS 指令集(共31条) MIPS 指令集(共31条) 助记符 指令格式 示例 示例含义 操作及其解释 Bit # 31..26 25..21 20..16 15..11 10..6 5..0 R ...
- PHP网络服务
[Socket] socket_create 用于创建一个Socket socket_bind 用于将IP地址和端口绑定到socket_create 函数所创建的句柄中. socket_listen ...
- PorterDuffXfermode之PorterDuff.Mode.LIGHTEN
package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...
- elasticsearch _search结果解析
kibana中输入:GET /_search 会返回一下结果: { "took": 9, # took:整个搜索请求花费多少毫秒 "timed_out": fa ...