zoukankan      html  css  js  c++  java
  • HDU 4499

    题目大意:

    N*M的棋盘上摆了一些棋子,在剩余位置上尽可能多的摆上炮,使所有炮不能互吃

    dfs+回溯

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #define max(x,y) x>y?x:y;
     5 using namespace std;
     6 int a[30],b[30],visit[7][7],n,m,q,ans;
     7 void dfs(int x,int y,int cnt)//一行一行地搜索,直到找到最后一行时结束时记录最大值
     8 {
     9     if(x>=n){
    10         ans=max(ans,cnt);
    11         return;
    12     }
    13     if(y>=m){
    14         dfs(x+1,0,cnt);
    15         return;
    16     }
    17     if(visit[x][y]){
    18         dfs(x,y+1,cnt);
    19         return;
    20     }
    21     dfs(x,y+1,cnt);
    22     int t,flag=0;
    23     for(t=y-1;t>=0;t--)
    24         if(visit[x][t]) break;
    25     for(int i=t-1;i>=0;i--)
    26     {
    27         if(visit[x][i]==2) {flag=1;break;}
    28         if(visit[x][i]) break;
    29     }
    30     if(flag)return;//判断这一列上是否存在炮互吃
    31     for(t=x-1;t>=0;t--)
    32         if(visit[t][y]) break;
    33     for(int i=t-1;i>=0;i--){
    34         if(visit[i][y]==2) {flag=1;break;}
    35         if(visit[i][y]) break;
    36     }
    37     if(flag) return;//判断这一行上是否存在炮互吃
    38     visit[x][y]=2;
    39     dfs(x,y+1,cnt+1);
    40     visit[x][y]=0;//回溯
    41 }
    42 int main()
    43 {
    44     while(scanf("%d%d%d",&n,&m,&q)!=EOF){
    45         memset(visit,0,sizeof(visit));
    46         for(int i=0;i<q;i++){
    47             scanf("%d%d",&a[i],&b[i]);
    48             visit[a[i]][b[i]]=1;
    49         }
    50         ans=0;
    51         dfs(0,0,0);
    52         printf("%d
    ",ans);
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    Codeforces Round #462 (Div. 2)
    Codeforces 934.D A Determined Cleanup
    Codeforces 934.C A Twisty Movement
    Codeforces 934.B A Prosperous Lot
    event和window.event
    javascript事件捕获与冒泡
    Dom兼容问题记录汇总
    流媒体网站开发技术浅谈
    javascript:自定义事件初探
    jQuery插件教程
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/3959716.html
Copyright © 2011-2022 走看看