搜索入门题目
来源:互联网 发布:python 提取d盘文件名 编辑:程序博客网 时间:2024/05/22 11:30
分组
输入文件:dataa.in
输出文件:dataa.out
简单对比
时间限制:1 s 内存限制:128 MB- 【问题描述】
现有 n 个学生, 要分成X1 ,X2 ,...,Xm ,共 m 组(m<=n, X1 ,X2 ,...,Xm 分别表示每组的学生人数),要求对于所有的i < j,Xi <= Xj ,共有多少种分组方案,求出分组方案。
【输入格式】
输入文件:dataa.in
只有一行:两个整数n,m(1<=n<=20 1<m<=10)
【输出格式】
输出文件:dataa.out
输出若干行,第一行是一个整数,表示分组方案数量.下面每行为一种分组方案,按字典序分组输出,每行的数与数之间用一个空格隔开。
【输入样例】
输入文件名: dataa.in
6 3
输出文件名: dataa.out
3
1 1 4
1 2 3
2 2 2
#include<iostream>#include<cstdio>#include<cstdlib>#include<queue>using namespace std;int a[10];int depth,ans;struct node{char p[11];};queue<node> q;//还可以用vector来存也可以,不用结构体来存 void dfs(int n,int m,int k) { if(m==1) { ans++; node c; int i;for(i=depth-1;i>0&&a[i]!=0;i--)c.p[i]=a[i];c.p[i]=n;q.push(c); return; } a[m-1]=k; if(k*2>n) return; dfs(n-k,m-1,k); dfs(n,m,k+1);}int main(){ freopen("dataa.in","r",stdin); freopen("dataa.out","w",stdout); int n; cin>>n>>depth; dfs(n,depth,1); cout<<ans<<endl; while(!q.empty()){ node p=q.front(); for( int i=depth-1;i>=0&&p.p[i]!=0;i--){ printf("%d ",p.p[i]);}printf("\n");q.pop();} return 0;}
0 0
- 搜索入门题目
- 杭电1238—搜索入门题目&&字符串处理
- 广度搜索(BFS)入门题目:抓住那头牛
- POJ1088 滑雪(记忆化搜索入门级题目)
- 广度优先搜索之入门题目->抓住那只牛
- 【搜索题目】
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 《挑战程序设计竞赛》P30 题目:部分和问题 深度搜索入门模板
- 【搜索入门】搜索字符串
- POJ搜索题目总结
- POJ搜索题目
- POJ搜索题目汇总
- 搜索专题题目推荐
- POJ 搜索题目分类
- 利用matlab对xml文件进行批量处理
- LeetCode - 121. Best Time to Buy and Sell Stock -思路详解
- 物理地址以及虚拟地址
- JavaScript 正则表达式 简单举例
- Jenkins配置----svn
- 搜索入门题目
- MYSQL安装
- js获取iframe对象
- 开坑计 1
- NOIP2016普及组复赛第一题ACC程序加题解pascal———买铅笔
- oracle中去掉文本中的换行符、回车符、制表符等特殊字符
- poj3421
- 正则表达式的相关内容。
- iOS键盘、选取器上的工具栏