贪心-关于HDU 1045题,一直wa,求大神解释

问题描述

关于HDU 1045题,一直wa,求大神解释

http://acm.hdu.edu.cn/showproblem.php?pid=1045
自己试了是对的,没错,可是就是WA

 #include<stdio.h>
int main()
{
    int huanjilu[10][10];
    char map[10][10];
    int juzhen,num;
    while(scanf("%d",&juzhen))
    {
        int ju;
        if(juzhen==0)break;
        for(int i = 0;i<=9;i++)
        {
            for(int j = 0;j<=9;j++)
            {
                huanjilu[i][j] = -1;
            }
        }
        for(int i= 0;i<=9;i++)//对地图赋于全墙值
        {
            for(int j=0;j<=9;j++)
            {
                map[i][j] = 'X';
            }
        }//over
        getchar();//用于消耗回车
        for(int i = 1;i<=juzhen;i++)//输入地图
        {
            for(int j = 1;;j++)
            {
                scanf("%c",&map[i][j]);
                if(map[i][j]=='n')
                {
                    map[i][j]='X';
                    ju=j-1;
                    break;
                }
            }

        }//over
        int count=0;
        for(int i = 1;i<=juzhen;i++)//对每个点的周围环境空数记录
        {
            for(int j = 1;j<=ju;j++)
            {
                if(map[i][j]!='X')
                {
                    if(map[i-1][j]!='X')count++;
                    if(map[i+1][j]!='X')count++;
                    if(map[i][j-1]!='X')count++;
                    if(map[i][j+1]!='X')count++;
                    huanjilu[i][j] = count;
                    count = 0;
                }
            }
        }//over
        int x=0,y=0;
        num=0;
        for(int i = 1;i<=juzhen;i++)//对地图中的最小环境搜索
        {
            for(int j = 1;j<=ju;j++)//找到第一个不为x的位置
            {
                if(huanjilu[i][j]!=-1 && huanjilu[i][j]!=-2)
                {
                    int min = huanjilu[i][j];
                    x=i,y=j;
                    for(int m=i;m<=juzhen;m++)
                    {
                        for(int n=1;n<=ju;n++)
                        {
                            if(map[m][n]=='.' && huanjilu[m][n]!=-2 && huanjilu[m][n]!=-1)
                            {
                                if(min>huanjilu[m][n])
                                {
                                    min = huanjilu[m][n];
                                    x = m;
                                    y = n;
                                }
                            }
                        }
                    }
                    huanjilu[x][y] = -2;
                    map[x][y]='l';
                    int x1,y1;
                    bool up,down,right,left;
                    up=down=right=left=false;
                    for(x1=x-1;x1>=0;x1--)//
                    {
                        if(map[x1][y]=='l')
                        {
                            map[x][y]='.';
                            break;
                        }
                        if(map[x1][y]=='X')
                        {
                            up=true;
                            break;
                        }
                    }//up
                    for(x1=x+1;x1<=juzhen+1;x1++)
                    {
                        if(map[x1][y]=='l')
                        {
                            map[x][y]='.';
                            break;
                        }
                        if(map[x1][y]=='X')
                        {
                            down=true;
                            break;
                        }
                    }//down
                    for(y1=y-1;y1>=0;y1--)
                    {
                        if(map[x][y1]=='l')
                        {
                            map[x][y]='.';
                            break;
                        }
                        if(map[x][y1]=='X')
                        {
                            left=true;
                            break;
                        }
                    }
                    for(y1=y+1;y1<=ju+1;y1++)
                    {
                        if(map[x][y1]=='l')
                        {
                            map[x][y]='.';
                            break;
                        }
                        if(map[x][y1]=='X')
                        {
                            right=true;
                            break;
                        }
                    }
                    j--;
                    if(left==true && right==true && up==true && down==true)
                    {
                        num++;
                    }
                }
            }
        }
        printf("%dn",num);
    }
    return 0;
}
时间: 2024-09-14 09:22:45

贪心-关于HDU 1045题,一直wa,求大神解释的相关文章

java-JAVA循环题,,求大神指教

问题描述 JAVA循环题,,求大神指教 100元怎么买100个蛋,鸡蛋1毛一个,鸭蛋3元一个,鹅蛋6元一个 解决方案 public class Egg{ public static void main(String[] args){ int chicken=0duck=0goose=0; for(int i=0;i<100;i++){ chicken = i; for(int j=0;j<100;j++){ duck = j; goose = 100-duck-chicken; if(chic

c语言-求大神解释C语言题,请解释详细一点,谢谢

问题描述 求大神解释C语言题,请解释详细一点,谢谢 下面的代码输出什么? #include int main(void) { int i; int a[5]; for (i = 0; i <= 5; ++i) { a[i] = -i; printf("a[%d] = %dn", i, a[i]); } return 0; } 解决方案 #include<stdio.h> void main() { int i=0; int a[5]={0,0,0,0,0}; for

汇编 汇编语言-汇编题 清考 求大神帮解决啊

问题描述 汇编题 清考 求大神帮解决啊 汇编,完成多分支,比如 y=9,x0 解决方案 写多个跳转就可以了.

oracle查询语句 一个加t 一个不加t 结果竟然不同 求大神解释

问题描述 oracle查询语句 一个加t 一个不加t 结果竟然不同 求大神解释 如题 oracle查询语句 一个加t 一个不加t 结果竟然不同 求大神解释 解决方案 我在虚拟机里进行的操作,屏幕显示的有显所以两行被选择,点击获取下一页就都出来了0.0~~~~~~~~233 解决方案二: 第二个图片里你查询后把那个一拉到底点下,数据就出来了 解决方案三: 哈哈自己的小失误 解决方案四: 是不是有其他人在操作呢? 所有的表均出现这种情况吗? 解决方案五: 童鞋!我看了半天也没发现哪不同.. 解决方案

求大神解释一下swift中实例和方法是什么?

问题描述 求大神解释一下swift中实例和方法是什么? 如题,求问一下swift中的实例是什么呢?方法是什么?有大神愿意解释一下么? 解决方案 方法 let f = MyClass.method 实例 let object = MyClass()

vs2012配置opencv后,函数报错,求大神解释

问题描述 vs2012配置opencv后,函数报错,求大神解释 我在配置好opencv2.4.10之后,找了个程序测试一下,但是程序中所有的opencv库中的函数都报错,说是为定义的标示符,但是opencv的库函数我已经链接输入了.搞了好久,求大神解答额 解决方案 opencv的lib库是否也用vs2012编译的,其次,link的时候路径等是否设置争取

数据结构程序求大神解释

问题描述 数据结构程序求大神解释 (*H).data[i].key=-1;(*H).data[i].hi=0;}for(i=0;i<n;i++) 解决方案 只有3行.只能看出是设置一个结构体中的两个字段,下面是一个不完整的循环 解决方案二: 你准是没有贴全代码.....

链表-一段输出两个list不同之处的代码,求大神解释

问题描述 一段输出两个list不同之处的代码,求大神解释 为什么代码中既有head,也有tail,他们两个是什么关系,各起到什么作用?求大神解释 Lnode * difference( Lnode *list1, Lnode *list2 ) { Lnode *head = NULL; Lnode *tail = NULL; Lnode *new_node; Lnode *copy_node; // walk through both lists, adding nodes as necessa

激活码-关于windows激活密钥。求大神解释。

问题描述 关于windows激活密钥.求大神解释. 我装了win10专业版,买了Retail通道的激活密钥激活了win10,可是为什么我用我的密钥还可以激活别人的win10,Retail密钥不是只能激活一台电脑吗?哪位可以解释一下. 解决方案 你在哪里买的.我的msdn零售密钥每个可以激活10个计算机.但是如果你买的是真正的零售密钥,只能激活1台计算机.激活另一台,会提示这个密钥已经在别的计算机上激活过. 如果你买的是msdn的密钥,理论上属于盗版,msdn只能用于开发测试和评估. 解决方案二: