zoukankan      html  css  js  c++  java
  • 记录

    1:递归实现组合型枚举

    总时间限制: 
    1000ms
    内存限制: 
    65536kB
    描述

    从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。

    输入
    两个整数 n,m ,在同一行用空格隔开。n > 00 ≤ m ≤ nn+(n−m) ≤ 25
    输出
    按照从小到大的顺序输出所有方案,每行 1 个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。
    样例输入
    5 3
    样例输出
    1 2 3 
    1 2 4 
    1 2 5 
    1 3 4 
    1 3 5 
    1 4 5 
    2 3 4 
    2 3 5 
    2 4 5 
    3 4 5
     1 #include<iostream>
     2 #define Maxn 1000
     3 using namespace std;
     4 
     5 int cnt=0;
     6 int n,m;
     7 int num[Maxn];
     8 
     9 void rank(int x)
    10 {
    11     if(cnt==m){
    12         for(int i=1;i<=m;++i){
    13             cout<<num[i]<<' ';
    14         }
    15         cout<<endl;
    16     }
    17     for(int i=x;i<=n;++i)
    18     {
    19         num[++cnt]=i;
    20         rank(i+1);
    21         cnt--;
    22     }
    23 }
    24 int main()
    25 {
    26     cin>>n>>m;
    27     rank(1);
    28     return 0;
    29 }
    
    

     

    2:马走日

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    马在中国象棋以日字形规则移动。

    请编写一段程序,给定 n * m 大小的棋盘,以及马的初始位置 (x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。

    输入
    第一行为整数 T,表示测试数据组数。
    每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标 n,m,x,y。
    1 <= T <= 9
    1 <= n, m <= 9
    0 <= x <= n - 1
    0 <= y <= m - 1
    输出
    每组测试数据包含一行,为一个整数,表示马能遍历棋盘的途径总数,若无法遍历棋盘上的所有点则输出 0。
    样例输入
    1
    5 4 0 0
    样例输出
    32
     1 #include<iostream>
     2 #include<cstring>
     3 #define check(p,q) (p>=0&&q>=0&&p<X&&q<Y)
     4 using namespace std;
     5 
     6 typedef struct node{
     7     int x;//横坐标
     8     int y;//纵坐标  
     9 }N;
    10 int dir[8][2]={
    11     {-1, -2}, {-2, -1}, 
    12     {-2, 1}, {-1, 2},
    13     {1, 2}, {2, 1}, 
    14     {2, -1}, {1, -2} 
    15 };
    16 int Y,X,x0,y0,cnt;
    17 int site[15][15];
    18 N firstSite;
    19 void dfs(N nowSite,int k)
    20 {
    21     if(k>=Y*X){
    22         cnt++;
    23         return ;
    24     }
    25     for(int i=0; i<8; ++i)
    26     {
    27         N s;
    28         s.x=nowSite.x+dir[i][0];
    29         s.y=nowSite.y+dir[i][1];
    30         if(check(s.x,s.y)&&site[s.y][s.x]==0)
    31         {
    32             site[s.y][s.x]=1;
    33             dfs(s,k+1);
    34             site[s.y][s.x]=0;
    35         }
    36     }
    37 }
    38 int main()
    39 {
    40     int N,k;
    41     cin>>N;
    42     while(N--)
    43     {
    44         cnt=0;
    45         k=1;
    46         cin>>X>>Y>>firstSite.x>>firstSite.y;
    47         site[firstSite.y][firstSite.x]=1;
    48         dfs(firstSite,k);
    49         cout<<cnt<<endl;
    50         memset(site,0,sizeof(site));
    51     }
    52     return 0;
    53 }
    
    













    天涯犹在,不诉薄凉。
  • 相关阅读:
    电脑设置开机
    python 环境搭建 python-3.4.4
    遍历hashmap 的四种方法
    Java8 使用 stream().map()提取List对象的某一列值及排重
    解决 SpringMVC 非spring管理的工具类使用@Autowired注解注入DAO为null的问题
    CXF之"@XmlType.name 和 @XmlType.namespace 为类分配不同的名称"错误
    java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL
    java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern
    java.lang.IllegalArgumentException: Request header is too large
    ie8 报错:意外地调用了方法或属性访问
  • 原文地址:https://www.cnblogs.com/Knight02/p/14710350.html
Copyright © 2011-2022 走看看