Problem Description
Search is important in the acm
algorithm. When you want to solve a problem by using the search
method, try to cut is very important.

Now give you a number sequence, include n (<=1000) integers,
each integer not bigger than 2^31, you want to find the first P
subsequences that is not decrease (if total subsequence W is
smaller than P, than just give the first W subsequences). The order
of subsequences is that: first order the length of the subsequence.
Second order the sequence of each integer’s position in the initial
sequence. For example initial sequence 1 3 2 the total legal
subsequences is 5. According to order is {1}; {3}; {2}; {1,3};
{1,2}. {1,3} is first than {1,2} because the sequence of each
integer’s position in the initial sequence are {1,2} and {1,3}.
{1,2} is smaller than {1,3}. If you also can not understand ,
please see the sample carefully.
Input
The input contains multiple test
cases.

Each test case include, first two integers n, P. (1

Output
For each test case output the sequences
according to the problem description. And at the end of each case
follow a empty line.
Sample Input
3
1 3
3
1 3
4
100 
1 2 3
2
Sample Output
1
1

1
1

1
1
2
2
1 2
1 2
题意:给你一个任意数列,让你求出所有的递增子序列;
解题思路:深搜,以长度为搜索的变量,从1-n,n为当前搜索的长度;每搜索到一个序列输出一个序列;后面这几个题越来越难写了0.0;
感悟:不能看题解,越看越毁啊!
代码:
#include
#include
#include
#include
#include
#define maxn 1001
using namespace std;
int n,p,pos[maxn],ans,len,pot[maxn],op[maxn];
bool flag;
void printf(int len)
{
    for(int i=0;i
     
  printf(i?" %d":"%d",pot[i]);
    printf("\n");
}
bool check(int s,int e)
{
    for(int i=s+1;i
    if(pos[i]==pos[e])
     
  return false;//如果这个数在前面出现过了就不能用了
    return true;
}

void dfs(int cur,int t)//cur表示当前需要派到第几位了,t表示当前搜索到第几位了
{
    if(ans>=p)
return;//大于p的就不需要搜了
    if(cur==len)
    {
     
  ans++;
     
  flag=true;
     
  printf(len);//将数组输出
     
  return;
    }
    for(int i=t;i
    {
     
 
if((cur&&pot[cur-1]<=pos[i])||!cur)
     
  //1  不是第一位的并且可以用这个数
     
  //2  是第一位的
     
  {
     
     
if(!cur&&!check(-1,i))//第0位没法比较这个数在前没出现没出现过
     
     
//所以只能用-1来比较
     
     
    continue;
     
     
if(cur&&!check(op[cur-1],i))//这才能比较
     
     
    continue;
     
     
pot[cur]=pos[i];
     
     
op[cur]=i;//记录到第几位了
     
     
dfs(cur+1,i+1);//不是从t+1开始搜的,而是从你找到这个数的下一位开始搜的
     
  }
    }
    return ;
}
int main()
{
    //freopen("in.txt", "r",
stdin);
   
while(scanf("%d%d",&n,&p)!=EOF)
    {
     
  memset(pos,0,sizeof pos);
     
  memset(pot,0,sizeof pot);
     
  for(int i=0;i
     
     
scanf("%d",&pos[i]);
     
  ans=0;
     
  for(int i=1;i
     
  {
     
     
flag=false;
     
     
len=i;
     
     
dfs(0,0);
     
     
if(ans>=p||!flag) break;
     
  }
     
  printf("\n");
    }
    return 0;
}

Sequence one的更多相关文章

  1. oracle SEQUENCE 创建, 修改,删除

    oracle创建序列化: CREATE SEQUENCE seq_itv_collection            INCREMENT BY 1  -- 每次加几个              STA ...

  2. Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等

    功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or ...

  3. DG gap sequence修复一例

    环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Wa ...

  4. Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  5. [LeetCode] Sequence Reconstruction 序列重建

    Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. Th ...

  6. [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列

    Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...

  7. [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  8. [LeetCode] Longest Consecutive Sequence 求最长连续序列

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  9. [LeetCode] Permutation Sequence 序列排序

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  10. Leetcode 60. Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

随机推荐

  1. NavigationController的返回按钮自定义

    假设需求时这样: NavigationController下有2个视图,从A视图会Push到B视图,默认情况下,当显示视图B时,视图B的导航bar上会出现返回按钮,按钮标题文字默认为A视图的title ...

  2. Linux入门之常用命令(11)复制cp及scp

    [scp] ================== scp 命令 ================== scp 可以在 2个 linux 主机间复制文件: 命令基本格式:        scp [可选参 ...

  3. Spring Boot Document Part I

    最近准备学习Spring Boot 随便翻一下官方的文档 Part I. Spring Boot Documentation Spirng Boot简短介绍,作为接下来内容的导航,可快速预览本章内容. ...

  4. 在asp.net web api 2 使用 Serilog 记录日志

    Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...

  5. 化繁为简 经典的汉诺塔递归问题 in Java

    问题描述   在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑 ...

  6. JSP静态化(伪静态)

    关于URLRewirte的用法:该方法只是实现了url的伪静态化,并不是真正的静态化. URLRewirte版本:urlrewrite-2.6.0.jar URLRewirte的用处: 1.满足搜索引 ...

  7. 每周分享之 二 http协议(3)

    本次分享http协议,共分为三部分,这是第三部分,主要讲解一个完整的http请求都经过哪些步骤,当我们在地址栏中输入网址,到返回页面都经历了什么 1.输入网址 当我们在浏览器中输入网址的时候,浏览器就 ...

  8. PHP字符串函数-trim()实例用法

    string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )此函数返回字符串 str 去除首尾空白字符后的 ...

  9. fitnesse - Variables and Symbols

    fitnesse - Variables and Symbols 2017-09-30 目录 1 Variables(静态变量)  1.1 定义及使用  1.2 Variable作用域    1.2. ...

  10. JS表单提交的几种方式

    第一种方式 : 表单提交,在 form 标签中增加 onsubmit 事件来判断表单是否提交成功 <script type="text/javascript"> fun ...