注册 登录
编程论坛 C语言论坛

C语言相关问题

aust20163030 发布于 2017-07-25 10:45, 790 次点击
while(scanf("%d%d%*c",&a,&b)==2) 这是C语言中的一行代码,我知道这行代码等同于 while(scanf("%d%d%*c",&a,&b)!=EOF) 但这行代码中 %*c 表达什么意思???它在代码中有什么作用,谢谢各位好心人在下方留言,感激不尽!!!源码如下:

程序代码:
/*此代码所要解决的问题:
输入有三部分  第一行 有两个数字分别代表下面几行(除了最后一行)的行数和列数 最后一行代表的是  公主的位置(坐标) 中间的几行有"#"和"O"他们分别代表的意思是    "#"中间是一个屋子四面都是墙 "O"的意思是
四面都是空的(没有墙) 王子手里的宝剑   在三个单位时间内 可以  打破一堵墙   王子从一个房间  跨越到另一个房间需要 1个单位时间  (王子只能 在上下左右 这四个方向上移动 )  现在给你  上述信息   你需要求出来王子   在用时 最短的情况下 几分钟可以将 公主解救出来 .
*/

#include <stdio.h>
#include <string.h>
int min=1000000,a,b,visit[55][55];//拯救者
char maze[55][55];//迷宫坐标
int main()
{
    int i,j,m,n;
    while(scanf("%d%d%*c",&a,&b)==2)
    {
        for(i=1;i<=a;i++){
            for(j=1;j<=b;j++)
                scanf("%c",&maze[i][j]);
            getchar();
        }
        scanf("%d%d",&m,&n);
        memset(visit,0,sizeof(visit));
        visit[1][1]=1;
        dfs(1,1,m,n,0);
        printf("%d\n",min);
    }
    return 0;
}

void dfs(int x,int y,int m,int n,int sum)
{
    if(x==m&&y==n)
    {
        if(sum<min)
            min=sum;
    }
    else{
        if(x-1>0&&(!visit[x-1][y]))
        {
            visit[x-1][y]=1;
            if(maze[x-1][y]=='#') dfs(x-1,y,m,n,sum+4);
            else dfs(x-1,y,m,n,sum+1);
            visit[x-1][y]=0;
        }
        if(x+1<=a&&(!visit[x+1][y]))
        {
            visit[x+1][y]=1;
            if(maze[x+1][y]=='#') dfs(x+1,y,m,n,sum+4);
            else dfs(x+1,y,m,n,sum+1);
            visit[x+1][y]=0;
        }
        if(y-1>0&&(!visit[x][y-1]))
        {
            visit[x][y-1]=1;
            if(maze[x][y-1]=='#') dfs(x,y-1,m,n,sum+4);
            else dfs(x,y-1,m,n,sum+1);
            visit[x][y-1]=0;
        }
        if(y+1<=b&&(!visit[x][y+1]))
        {
            visit[x][y+1]=1;
            if(maze[x][y+1]=='#') dfs(x,y+1,m,n,sum+4);
            else dfs(x,y+1,m,n,sum+1);
            visit[x][y+1]=0;
        }
    }
}


[此贴子已经被作者于2017-7-25 10:51编辑过]

1 回复
#2
九转星河2017-07-25 14:47
%*c是用来吸收残留的'\n'~

还有~如果要寻找最短路径dfs能适应空旷面积较广的情况下么~感觉bfs能更容易理解~
1