NYOJ90-整数划分

整数划分
时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 
其中n1≥n2≥…≥nk≥1,k≥1。 
正整数n的这种表示称为正整数n的划分。求正整数n的不 
同划分个数。 
例如正整数6有如下11种不同的划分: 
6; 
5+1; 
4+2,4+1+1; 
3+3,3+2+1,3+1+1+1; 
2+2+2,2+2+1+1,2+1+1+1+1; 
1+1+1+1+1+1。 

输入
第一行是测试数据的数目M(1<=M<=10)。以下每行均包含一个整数n(1<=n<=10)。
输出
输出每组测试数据有多少种分法。
样例输入
1
6
样例输出
11

//忙着期末考试,好久没做题了,今天水水吧。。。

DFS深搜

AC代码:

#include<stdio.h>
#include<string.h>
int sum,per;
void Found(int n,int m)
{
     int i,t=per;

     if(m>n)
     return;

     if(m==n)
     {
        sum++;
        return;
     }

     for(i=n;i>=1;i--)
     {
        if(i<=per)
        {
            per=i;//设立per的原因是,让之后加的数都小于等于原来的数,这样才能保证不重复
            Found(n,m+i);
            per=t;
        }
     }

}
int main()
{
    int i,j,n,m;
    scanf("%d",&n);
    while(n--)
    {
       scanf("%d",&m);
       sum=0;per=10;
       Found(m,0);
       printf("%d\n",sum);
    }
    return 0;
}
时间: 2025-01-19 01:24:00

NYOJ90-整数划分的相关文章

算法-关于整数划分的一个问题

问题描述 关于整数划分的一个问题 最近遇到一个问题.这问题是关于整数划分的.要求是这样的,把一个整数N,划分成K份(不是小于等于K份).每份的值允许重复(例:5,1,1,1).并且要求每份都大于等于X.并且输出每一种划分方法(从大到小排序).求各位大神指点. 解决方案 整数划分问题整数划分问题整数划分问题

整数划分-怎么输出一个一个整数的划分数呢?

问题描述 怎么输出一个一个整数的划分数呢? 例如 输入6 应输出: 可以分划为: 6 5+1 4+2, 4+1+1 3+3, 3+2+1, 3+1+1+1 2+2+2, 2+2+1+1, 2+1+1+1+1 1+1+1+1+1+1+1 我写了整数划分的递归函数,可是怎么实现输出划分呢? #include int divide(int n,int m); void main() { int num = 0; int divide_number = 0; printf("请输入你要划分的数字: &q

HDOJ 1028(整数划分)

/* 大概思路是开2个数组,c1[ ]保存当前得到的多项式各项系数,c2[ ]保存每次计算时的临时结果, 当每次计算完毕后,把它赋给c1,然后c2清零. 计算的时候,开3层for循环.最外层,记录它正在与第几个多项式相乘. 第二层,表示c1中的每一项,第三层表示后面被乘多项式中的每一项. */ #include <stdio.h> #include <string.h> const int MAX=120; int main() { int n,c1[MAX+5],c2[MAX+5

《程序设计解题策略》——第1章 利用树型数据关系的解题策略 1.1 利用划分树求解整数区间内第k大的值

第1章 利用树型数据关系的解题策略 树是一个具有层次结构的集合,一种限制前件数且没有回路的连通图.在现实生活和程序设计的竞赛试题中,许多问题的数据关系呈树型结构,因此有关树的概念.原理.操作方法和一些由树的数据结构支持的算法,一直受到编程者的重视,被广泛应用于解题过程.在本章里,我们将介绍利用树型数据关系解题的七种策略: 1) 利用划分树求解整数区间内第k大值. 2) 利用最小生成树及其扩展形式(最优比率生成树.最小k度生成树.次小生成树)计算有权连通无向图中边权和满足限制条件的最优生成树. 3

C#的整数类型

顾名思义,整数类型的变量的值为整数.数学上的整数可以从负无穷大到正无穷大,但是由于计算机的存储单元是有限的,所以计算机语言提供了整数类型的值总是在一定范围之内.C#中有九种整数类型:短字节型(sbyte).字节型(byte).短整型(short).无符号短整型(ushort).整型(int).无符号整型(uint).长整型(long).无符号长整型(ulong).划分的依据是根据该类型的变量在内存中所占的位数.位数的概念是按照2的指数幂来定义的,比如说8位整数,则它可以表示2的8次方个数值,即2

整数划分算法原理与实现

本文为原创,如需转载,请注明作者和出处,谢谢!     整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n.     如6的整数划分为         6     5 + 1     4 + 2, 4 + 1 + 1     3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1     2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1     1 + 1 + 1 + 1 + 1 + 1         共11种.

整数划分问题

       整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及.所谓整数划分,是指把一个正整数n写成如下形式:        n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分.        如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)<=m,则称它属于n的一个m划分.这里我们记n的m划分的个数为f(n,m);        例如

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

JSTL标签库(2) I18N格式化标签库

I18N格式化标签库 JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言.同时还提供了格式化数据和日期的方法. 实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary).引入该标签库的方法为: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> I18N格式标签库提供了11个