简单的深搜题

/*高中同学问了我一道题,开始以为简单循环就能完成,后来发现原来是道深搜题,一开始还没想出来...

问题描述

给1到N,N个数,要你从中选取M个出来,请输出每一种的选取情况(根据序列字典序输出,

即两个序列比大小,第一位小的小,若相等第二位小的小,若相等第三位小的小……)。

样例输入

4 3

样例输出

1 2 3

1 2 4

1 3 4

2 3 4*/

<span style="font-size:18px;">#include<stdio.h>
int ans[10];
void dfs(int start,int has,int n,int m)
{
	if(has==m)
	{
		for(int i=0;i<m;i++)
		printf("%d ",ans[i]);
		printf("\n");
		return;
	}
	for(int i=start+1;i+m<=n+has+1;i++)
	{
	ans[has]=i;
	dfs(i,has+1,n,m);
	}
}
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	dfs(0,0,n,m);
}</span>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 02:26:22

简单的深搜题的相关文章

fzu 1920 Left Mouse Button(简单深搜题)

题目地址:http://acm.fzu.edu.cn/problem.php?pid=1920 题目大意是给定一个n*n的图,模拟扫雷游戏,0代表没有雷区,1代表附近九宫格内只有一个雷-- 如果不懂的话去玩下扫雷,挺好玩的,99个雷的玩了好几百盘才赢了一次............ 此题假设神操作,点不到雷,问你最少要多少下才可以把图中非雷的点完,怎么样才最快呢? 当然先点0啦,,,,,,,, 好吧,不废话了..... ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

poj1562 Oil Deposits(简单的深搜)

Oil Deposits Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14391   Accepted: 7823 Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular r

基础深搜小结

目前看来,简单深搜题大致分为三类题型: 1是连通块问题,求连通块大小和数量. 2是迷宫问题,问地图内放几个坐标,有几个放法. 3是输出路径问题. 1.这个问题的经典例题是计算水塘(pku-2386 lake counting) 例题: Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N

哈理工OJ 2179(深搜)

组合 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 7(5 users) Total Accepted: 6(5 users) Rating: Special Judge: No Description 给出一个正整数N,从集合{1,2,3..N} 中找出所有大小为k的子集, 并按照字典序从小到大输出. Input 第一行是一个整数T,代表T组测试数据. 接下来T行,每行是两个正整数n(1<=n<=10), k(1<=k&

HDOJ/HDU 1242 Rescue(经典BFS深搜)

Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison. Angel's friends want to save Angel. Their task is: approa

poj 2837 Silver Matrix 不使用栈的深搜

题意: 给定k,让构造一个2^k*2^k的矩阵,使得对任意i,第i行和第i列由1,2,...2^k-1这2^k-1个数组成. 分析: 很明显是个深搜题.设n=2^k,则搜素树高度(状态空间维度)为n,每个状态可扩展n个状态,复杂度n^n,大概是512^512...所以必须有强力的剪枝而且不要用递归去写.一般对深搜来说,搜索树高度固定的话可以用for循环直接枚举,不固定话要用递归或栈,这题搜索树高度不固定(n为输入),怎么办呢?..这样可以清楚明了地搞定:dfs的while循环写法. 代码: //

poj 1164 The Castle (入门深搜)

题目: 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#####---#---# 4 # # | | | | # # ############################# (Figure 1)

POJ 2676 挺复杂的一道深搜

这道题之前就做了,一直没写题解,很不错的一道深搜题.这道题没什么剪枝优化,思路就是将空白格子的位置放入一个数组,然后用dfs尝试每个空白格子所放的数字. Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15861   Accepted: 7753   Special Judge Description Sudoku is a very simple task. A square table with 9 ro

ACM_Jack拆炸弹(深搜)

Jack拆炸弹 Time Limit: 2000/1000ms (Java/Others) Problem Description: 在一个由n*n个格子组成的监狱里被恐怖份子安置了一个定时炸弹.其中,连续的"."表示格子之间可以通行,"#"表示障碍物.每次只能按上下左右4个方向走,有障碍物就不能通过.给出一副监狱的俯视图和炸弹(B)和侦探Jack(P)的位置,问Jack能不能找到炸弹的安置点并及时把它拆除,若可以输出"Yes",否则输出&quo