WUSTOJ 1269: 划分数

参考博客

果7的博客

题目

  将 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();
} }

代码补充

  1. Java申请空间之后,会有默认值的,int的默认值为0,因此不用像C/C++那样赋值为0
  2. 此代码全部都写在了main方法里面了,因为构造方法是有点占时间的。(不是我的习惯,我比较喜欢分开。)
  3. Java调用方法也是占时间的,取小方法Math.min(int a, int b)还是不用的好,毕竟此处的三目运算符也是很容易理解的。

1269: 划分数(Java)的更多相关文章

  1. JVM性能调优实践——JVM篇

    前言 在遇到实际性能问题时,除了关注系统性能指标.还要结合应用程序的系统的日志.堆栈信息.GClog.threaddump等数据进行问题分析和定位.关于性能指标分析可以参考前一篇JVM性能调优实践-- ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. [Java编程思想-学习笔记]第4章 控制执行流程

    4.1  return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ...

  4. android布局太深导致的 java.lang.StackOverflowError

    E/AndroidRuntime( 1900): java.lang.StackOverflowError E/AndroidRuntime( 1900):     at android.graphi ...

  5. Java和Flex整合报错(五)

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  6. Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行

    1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用 ...

  7. 20155207王雪纯 2016-2017-2 《Java程序设计》第六周学习总结

    20155207 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第10章 输入/输出 10.1 InputStream与OutputStream 10.1. ...

  8. 20155207 2016-2017-2 《Java程序设计》第九周学习总结

    20155207 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立 ...

  9. 20155207 2016-2017-2 《Java程序设计》第七周学习总结

    20155207 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第13章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 格林威治时间(GM ...

随机推荐

  1. (转)hive调优(1) coding调优

    hive 调优(一)coding调优 本人认为hive是很好的工具,目前支持mr,tez,spark执行引擎,有些大公司原来封装的sparksql,开发py脚本,但是目前hive支持spark引擎(不 ...

  2. wx.navigateTo的url不生效的问题

    比如我要要从index页面跳转到logs. 在跳转的时候应该用switchTab,而不是wx.navigateTo 看api这句话 https://developers.weixin.qq.com/m ...

  3. mybatis xml中是sql语句报错: Error creating document instance. Cause: org.xml.sax.SAXParseException: The

    最近项目折腾了老半天,找了资料才知道是这么回事... 因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为mysql的SQL语句的组成部分,修改如下: 1.在xml的 ...

  4. Spring和Quartz整合实现定时任务调度

    在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...

  5. windows 家庭版 开启Hyper-V

    windows 家庭版无法开启Hyper-V ,建议升级成专业版.

  6. case设计及验证:入口+页面+展示

    测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...

  7. DELPHI10.3.2安卓SDK安装

    DELPHI10.3.2安卓SDK安装 DELPHI10.3.2默认安装以后,还需要安装安卓SDK,才可以编译安卓项目. 1)运行Android Tools 2)勾选安装下面几个

  8. Matrix学习

    package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.ColorMatr ...

  9. 阿里云RDS与ECS服务器数据库做主从

    阿里云RDS与ECS服务器数据库做主从 [精] 里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求.提供稳定.高性 ...

  10. MySQL中表的复制以及大型数据表的备份教程

    MySQL中表的复制以及大型数据表的备份教程     这篇文章主要介绍了MySQL中表的复制以及大型数据表的备份教程,其中大表备份是采用添加触发器增量备份的方法,需要的朋友可以参考下 表复制 mysq ...