苹果

OpenJudge 666:放苹果

假装没事ソ 提交于 2020-01-30 11:09:53
总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 输出 对输入的每组数据M和N,用一行输出相应的K。 样例输入 1 7 3 样例输出 8 用数组a[i][j]来存放一个值,表示i个苹果放入J个盘子的方法 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int n,m,a[201][201]; 6 void dp(){ 7 for(int i=1;i<=11;i++) a[0][i]=1,a[i][1]=1;//表示0个苹果放入i个盘子的方法为1,表示i个苹果放入1个盘子的方法也为1 8 for(int i=1;i<=11;i++) 9 for(int j=1;j<=11;j++) 10 if(i>=j) a[i][j]=a[i-j][j]+a[i][j-1];//a[i-j][j]每个盘子拿掉一个苹果,a[i][j-1]拿掉一个盘子 11 else a[i][j]=a[i][j-1];

666:放苹果

狂风中的少年 提交于 2020-01-30 11:08:41
666:放苹果 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 输出 对输入的每组数据M和N,用一行输出相应的K。 样例输入 1 7 3 样例输出 8 来源 lwx@POJ 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 int t;//测试数据数量 7 int n;//苹果数 8 int m; //盘子数 9 int tot=0;//最多有几种放法 10 int f(int a,int b) 11 { 12 if(a<=1||b<=1)//当只有一个苹果或一个盘时,只有一种放法 13 return 1; 14 if(a<b) 15 return f(a,a);//苹果数<盘数,则最多只有b个盘有苹果 16 else 17 return f(a,b-1)+f(a-b,b);///如果有一个不放,则有 f(a,b-1)种

666:放苹果(划分dp)

試著忘記壹切 提交于 2020-01-30 10:55:06
666:放苹果 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 输出 对输入的每组数据M和N,用一行输出相应的K。 样例输入 1 7 3 样例输出 8 来源 lwx@POJ #include<cstdio> using namespace std; int a[11][11],n,m,t; void init() { /*解题分析: 设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论, 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m)   当n<=m:不同的放法可以分成两类: 1、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1); 2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即f(m,n) = f(m-n,n). 而总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n) */ //a[i][j

递归算法:苹果放置问题

半腔热情 提交于 2020-01-29 12:23:55
问题描述: 把M个苹果放在N个盘子中,允许有盘子为空,共有多少种放置的方法。1.2.1和2.1.1是同样的放置方法。 输入: 第一行是测试数据的数目Num(0<=Num<=20)。以下每行均包含2个整数M和N,以空格分开。1<=M,N<=10。 输出: 对输入的每组数据M和N,用一行输出相应的K。 样例输入: 1 7 3 样例输出: 8 问题的思考及解决: 这题的思考模式和爬楼梯有点相似,也是类似于排列组合的问题,但是又不能用排列组合的思想来处理这个问题,需要用递归的思想来处理这个放置苹果的问题。 这个题目有3个需要考虑的问题点: 1)苹果和盘子数目的大小是否影响递归的思路 2)苹果和盘子如何进行递归求解摆放的数量 3)递归终止的条件 先从第一个问题考虑:当盘子数多于苹果数时,无论怎么放置,必然会有盘子多出来的。我们假设写个函数叫PlaceApple(m,n),返回值为放置的方法,那么当m<n时,有PlaceApple(m,n)=PlaceApple(m,m)。 那么如果m>n时,如何处理呢,此时我们会发现,在这种情况下,可能有盘子多出来,也可能没有盘子多出来。苹果放置的方法就为没有空盘子的情况和有空盘子的情况的总和,即为:PlaceApple(m,n)=PlaceApple(m, n - 1) + PlaceApple(m - n, n)。PlaceApple(m, n - 1

HTML游戏之贪吃蛇

荒凉一梦 提交于 2020-01-29 08:48:43
HTML游戏之贪吃蛇Snake,代码来自github作者 Steven Lambert < ! DOCTYPE html > < html > < head > < title > < / title > < style > html , body { height : 100 % ; margin : 0 ; } body { background : black ; display : flex ; align - items : center ; justify - content : center ; } canvas { border : 1 px solid white ; } < / style > < / head > < body > < canvas width = "400" height = "400" id = "game" > < / canvas > < script > var canvas = document . getElementById ( 'game' ) ; var context = canvas . getContext ( '2d' ) ; var grid = 16 ; var count = 0 ; var snake = { x : 160 , y : 160 , // snake velocity. moves one

python中的异常处理

那年仲夏 提交于 2020-01-29 05:09:49
“”" 在程序运行过程中,经常会遇到各自各样的错误,这些错误统称为异常。这些异常有的时由于开发者将关键字敲错导致的,这类错误多数产生的是SyntaxError:invalid syntax(无效的语法), 这将直接导致程序不能运行。这类异常是显示的,在开发阶段很容易被发现.还有一类是显示的,通常和使用者的操作有关。 在python中,提供了try…except语句捕获并处理异常。 在使用时,把可能产生异常的代码放在try语句块中,把处理结果放在except语句中,这样当try语句块中的代码出现错误时,就会执行except语句块中的代码,如果try语句块 中的代码没有错误,那么except语句就不会执行。 “”" def division(): “”" 功能:分苹果 :return: “”" print("= 分苹果 =\n") apple=int(input(“请输入苹果的总数:”)) children=int(input(“来的小朋友的人数:”)) result=apple//children # 计算每个分几个苹果 两个斜杠就是取整数 remain=apple-result*children # 计算剩下几个苹果 if remain>0: print(apple,“个苹果,平均分给”,children,“个小朋友,每个人分”,result,“个,剩下”,remain,“个.”)

HDU5977-Garden of Eden-树分治+FWT

血红的双手。 提交于 2020-01-28 11:49:36
题目描述 When God made the first man, he put him on a beautiful garden, the Garden of Eden. Here Adam lived with all animals. God gave Adam eternal life. But Adam was lonely in the garden, so God made Eve. When Adam was asleep one night, God took a rib from him and made Eve beside him. God said to them, “here in the Garden, you can do everything, but you cannot eat apples from the tree of knowledge.” One day, Satan came to the garden. He changed into a snake and went to live in the tree of knowledge. When Eve came near the tree someday, the snake called her. He gave her an apple and persuaded her

设计模式—简单工厂模式

时间秒杀一切 提交于 2020-01-28 05:14:24
今天,我们来认识一下简单工厂模式。 首先,什么是简单工厂模式呢,简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 简单工厂模式中包含三个角色:工厂角色、抽象角色、具体产品角色,我们来了解一下这些角色及其职责。 工厂角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以直接被外界调用,创建所需产品; 抽象角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所有的公共接口; 具体产品角色:简单工厂模式所创建的具体实例对象。 我们现在来看看代码是怎么实现的吧。 首先,创建一个父类Fruit,申明一个公用方法 public interface Fruit { public void get(); } 然后创建两个具体的实例对象,实现父类 public class Apple implements Fruit{ /** * 采集 */ public void get(){ System.out.println("采集苹果"); } } public class Banana implements Fruit{ /** * 采集 */ public void get(){ System.out.println("采集香蕉"); } } 接下来,我们就要创建工厂了 public class

MongoDB学习笔记(查询)

丶灬走出姿态 提交于 2020-01-28 05:03:41
1. 基本查询: 构造查询数据。 > db.test.findOne() { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --多条件查询。下面的示例等同于SQL语句的where name = "stephen" and age = 35 > db.test.find({"name":"stephen","age":35}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "stephen@hotmail.com" } --返回指定的文档键值对。下面的示例将只是返回name和age键值对。 > db.test.find({}, {"name":1,"age":1}) { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35 } --指定不返回的文档键值对。下面的示例将返回除name之外的所有键值对。 > db

Python-CCF:20190901 小明种苹果

别说谁变了你拦得住时间么 提交于 2020-01-27 06:59:51
文章目录 题目 用时 思路分析 满分代码 题目 用时 读题+分析:10min 写代码:70min 虽然是一遍过,但不是很满意,用时太长了 不过考虑到是隔了好久再做CSP,手生是正常的 毕竟和平时写爬虫写Django不一样,CSP对细节的要求更高,稍有不慎失去的可能就是几十分 所以大体来说差强人意吧 思路分析 输入分析 第一个3是指3棵苹果树 第二个3是指修剪每棵苹果树修剪3轮 这里容易受到误导,一定注意 73是指第一棵树开始时有73个苹果 -8、-6、-4分别是每轮修剪8个、6个、4个 下同 数据结构分析 每棵苹果树都有 属性:树的编号、苹果个数、被修剪苹果的总数 方法:修剪,传入参数为每次修剪的个数 很自然的想到用类和对象去写 其他注意事项 输出的编号是从1开始的,也就是说没有第0棵树这种说法,如果想用下标表示编号一定要注意 第二个输入示例中涉及到了相同元素的排序顺序,Python的sort方法是稳定的,正好符合要求 输入的修剪个数为非正数,所以定义修剪方法时要分清加减号 满分代码 class AppleTree : tree_name = 0 apples_num = 0 cut_sum = 0 def __init__ ( self , original_apples_num , tree_name ) : # 初始化一个苹果树对象时传入原有苹果个数和编号(注意:从1开始)