zoukankan      html  css  js  c++  java
  • UVA 639 Don't Get Rooked

    UVA_639

    这个题目可以先将横向相连的“.”看作一个块,并记录下块开始和结束的坐标,每个块中只能放一个rook

    之后便顺序枚举每种方案并判断rook是否可以放在假设的位置,如果可以就继续深搜。当搜完搜有的块之后,就可以比较放置的rook总数与ans了,如果比ans大,则更新ans的值。

    #include<stdio.h>
    #include
    <string.h>
    int ans,n,num,dx[]={-1,1,0,0},dy[]={0,0,-1,1};
    int begin[20],end[20],a[10][10],vis[10][10];
    char b[10];
    int dfs(int cur,int tot)
    {
    int i,j,k,p,q,x,y,flag,ok;
    for(i=cur;i<num;i++)
    for(j=begin[i];j<end[i];j++)
    {
    x
    =j/n;
    y
    =j%n;
    vis[x][y]
    =1;
    ok
    =1;
    for(k=0;k<4;k++)
    {
    p
    =x;
    q
    =y;
    p
    +=dx[k];
    q
    +=dy[k];
    for(;p>=0&&p<n&&q>=0&&q<n;p+=dx[k],q+=dy[k])
    {
    if(!a[p][q])
    break;
    if(vis[p][q])
    {
    ok
    =0;
    break;
    }
    }
    }
    if(ok)
    dfs(i
    +1,tot+1);
    vis[x][y]
    =0;
    }
    if(i==num&&tot>ans)
    ans
    =tot;
    }
    int main()
    {
    int i,j,k,x,y;
    while(1)
    {
    scanf(
    "%d",&n);
    if(n==0)
    break;
    for(i=0;i<n;i++)
    {
    scanf(
    "%s",b);
    for(j=0;j<n;j++)
    {
    if(b[j]=='.')
    a[i][j]
    =1;
    else
    a[i][j]
    =0;
    }
    }
    num
    =0;
    memset(begin,
    -1,sizeof(begin));
    memset(end,
    -1,sizeof(end));
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
    if(a[i][j])
    {
    if(j==0||!a[i][j-1])
    begin[num]
    =i*n+j;
    }
    else if(begin[num]!=-1)
    {
    end[num]
    =i*n+j;
    num
    ++;
    }
    }
    if(begin[num]!=-1)
    {
    end[num]
    =i*n+n;
    num
    ++;
    }
    }
    memset(vis,
    0,sizeof(vis));
    ans
    =0;
    for(i=0;i<num;i++)
    for(j=begin[i];j<end[i];j++)
    {
    x
    =j/n;
    y
    =j%n;
    vis[x][y]
    =1;
    dfs(i
    +1,1);
    vis[x][y]
    =0;
    }
    printf(
    "%d\n",ans);
    }
    return 0;
    }

      

  • 相关阅读:
    scala :: , +:, :+ , ::: , ++ 的区别
    Scala 函数式编程思想
    Scala 关键字
    HDFS 的内存存储是什么?
    LRU
    高并发情况限流
    Java中List集合去除重复数据的方法
    MySQL支持的跨库事务
    死磕ConcurrentHashMap 1.8源码解析
    一致性Hash算法
  • 原文地址:https://www.cnblogs.com/staginner/p/2166640.html
Copyright © 2011-2022 走看看