touwangyi 2015-10-10 04:26 采纳率: 60%
浏览 764

关于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("%d\n",num);
    }
    return 0;
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?