题目描述:Special array

 
输入n和m(20>=m>=n>0)求出所有满足以下方程的正整数数列 i1,i2,...,in,使i1+i2+...+in=m,且i1>=i2...>=in。例如:当n=4, m=8时,将得到如下5 个数列: 5 1 1 1 4 2 1 1 3 3 1 1 3 2 2 1 2 2 2 2

输入

输入只有一行,包含每个数列的元素个数n和数列元素的和m。

输出

按照字典逆序输出所有的数列,每个数列输出一行,每个数列元素用一个空格分开。

样例输入

4 8

样例输出

5 1 1 1
4 2 1 1
3 3 1 1
3 2 2 1
2 2 2 2 解题思路:很简单的一道DFS题目,减枝策略可以除了常规的策略之外,再加上当前搜索数目最大不超过剩余数-剩余位置个数。
 // specical array.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <cstring>
using namespace std;
const int MAX = ;
int n, m, arr[MAX]; //最后一个数,已经填数的个数,数组总和
void DFS(int cur, int cnt, int sum)
{
if (cnt == n)
{
if (sum == m)
{
for (int i = ; i < n; i++)
{
if (i != n - ) cout << arr[i] << " ";
else cout << arr[i] << endl; }
}
return; }
for (int i = cur; i >= ; i--) // 从大到小开始搜索
{
if (i + sum + n - cnt - <= m) //n-cnt-1 是剩余大小
{
arr[cnt] = i;
DFS(i, cnt + , sum + i);
} }
} int main()
{
while (cin >> n >> m)
{
memset(arr, , sizeof(arr)); for (int i = m - n + ; i >= ; i--)
{
arr[] = i;
DFS(i, , i);
}
} return ;
}

ACM-Special Array的更多相关文章

  1. ACM会议列表与介绍(2014/05/06)

    Conferences ACM SEACM Southeast Regional Conference ACM Southeast Regional Conference the oldest, co ...

  2. 观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?

    在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array o ...

  3. CF959D Mahmoud and Ehab and another array construction task 数学

    Mahmoud has an array a consisting of n integers. He asked Ehab to find another array b of the same l ...

  4. codeforces-473D Mahmoud and Ehab and another array construction task (素数筛法+贪心)

    题目传送门 题目大意:先提供一个数组,让你造一个数组,这个数组的要求是 1 各元素之间都互质  2  字典序大于等于原数组  3 每一个元素都大于2 思路: 1.两个数互质的意思就是没有公因子.所以每 ...

  5. Codeforces 959 D Mahmoud and Ehab and another array construction task

    Discription Mahmoud has an array a consisting of n integers. He asked Ehab to find another arrayb of ...

  6. 信息检索盛会 微软“领衔主演”——记ACM SIGIR 2013信息检索国际会议

    微软"领衔主演"--记ACM SIGIR 2013信息检索国际会议" title="信息检索盛会 微软"领衔主演"--记ACM SIGIR  ...

  7. SCI&EI 英文PAPER投稿经验【转】

    英文投稿的一点经验[转载] From: http://chl033.woku.com/article/2893317.html 1. 首先一定要注意杂志的发表范围, 超出范围的千万别投,要不就是浪费时 ...

  8. sdn测量论文简介

    Prelude: Ensuring Inter-Domain Loop-Freedom in SDN-Enabled Networks 来源:APNet: The Asia-Pacific Works ...

  9. CIKM Competition数据挖掘竞赛夺冠算法陈运文

    CIKM Competition数据挖掘竞赛夺冠算法陈运文 背景 CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称.CIKM全称是Intern ...

随机推荐

  1. mybatis关键查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  2. 解题报告:luogu P1144 最短路计数

    题目链接:P1144 最短路计数 很简单的一道\(dfs\),然而我又跑了一遍\(dij\)和排序,时间复杂度是\(O(nlog n)\) 注意:\(1\).搜索时向\(dis[j]=dis[cur] ...

  3. sklearn学习笔记(1)--make_blobs函数及相应参数简介

    make_blobs方法: sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=3, cluster_std=1.0,cent ...

  4. Java FTPClient 大量数据传输的问题(未解决)

    业务需要 需要将一个存储的目标文件里的文件全部拷贝到另一个存储里面去,保持文件结构. 目前采用 org.apache.commons.net.ftp包下相关类来达到ftp连接 获取文件目录信息,拷贝文 ...

  5. NULL判斷符

    Null 传导运算符 编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在.比如,要读取message.body.user.firstName,安全的写法是写成下面这样. const ...

  6. SQL注入的原理及分析

    注入攻击的本质:将用户输入的数据当做代码执行. 有2个限制条件: 1.用户能够控制输入. 2.原本程序要执行的代码,拼接了用户输入的数据后进行执行. 定义:用户输入的数据被当做SQL语句执行. 以下面 ...

  7. 区块链 - 默克尔树(Merkle Tree)

    章节 区块链 – 介绍 区块链 – 发展历史 区块链 – 比特币 区块链 – 应用发展阶段 区块链 – 非对称加密 区块链 – 哈希(Hash) 区块链 – 挖矿 区块链 – 链接区块 区块链 – 工 ...

  8. Uncaught Error: Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3

    前端导入静态页面的时候有一个报错,主要问题是冲突了 Uncaught Error: Bootstrap's JavaScript requires jQuery version 1.9.1 or hi ...

  9. 1_01_MSSQL课程_基础入门

    0. 课程安排: 课程共7天课,前两天SQL基础,后面三天Ado.Net ,最后两天数据库高级进阶学习. 1.数据库的概念 ->数据库就是数据仓库. ->DBMS:数据库管理系统.SQLS ...

  10. HDU1880 魔咒词典

    题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射.接下来询问的时候,如果这个字符串出现过,输出其对应的字符串. 分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行.二重哈希的入门题 ...