注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

奕克

爱家人爱工作爱生活

 
 
 

日志

 
 

hdu1045-firenet(c写法)  

2012-03-12 23:09:00|  分类: ACM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
     网上转载的c++改写成c版本,很奇怪的事情,对于map的大小,定义成4,4.本地测试数据没问题,提交后就WA。但是如果定义成5,5,本地和提交都没问题。难道是因为用%s输入会有回车在最后位?灵异事件啊。。。。

#include "stdio.h"
char map[5][5];
int n,maxn;

int PutNode(int x, int y)//x,y处是否可放置堡垒
{   int i;
    if(map[x][y]!= '.') return 0;
    for(i=x-1; i>=0; i--)
    {   if(map[y] == 'X') break;
        if(map[y] == 'O') return 0;
    }
    for(i=y-1; i>=0; i--)
    {   if(map[x] == 'X') break;
        else if(map[x] == 'O') return 0;
    }
    return 1;
}

void dfs(int pos,int num)//从第pos个点开始回溯搜索
{   int x,y;
    if(pos>=n*n)  //控制边界只需要一句话。
    {   if(maxn < num)  maxn = num;
        return;
    }
   //这两句求第pos个点的坐标。
    x = pos/n;
    y = pos%n;
    if(PutNode(x,y)==1)    //可以在该点安放堡垒
    {
        map[x][y] = 'O';
        dfs(pos+1,num+1); //尝试放下一个点
        map[x][y] = '.';
    }
    dfs(pos+1,num);    //不在该点安放堡垒
}

int main()
{   int i,j,c;
    scanf("%d",&n);
    while(n!=0)
    {   for(i=0; i<n; i++)
          scanf("%s",&map);
         maxn = 0;
        dfs(0,0);
        printf("%d\n",maxn);
        scanf("%d",&n);
    }
    return 0;
}
  评论这张
 
阅读(166)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017