| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 821 人关注过本帖
标题:C语言相关问题
只看楼主 加入收藏
aust20163030
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-25
收藏
 问题点数:0 回复次数:1 
C语言相关问题
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编辑过]

搜索更多相关主题的帖子: scanf 一行 代码 int sum 
2017-07-25 10:45
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
%*c是用来吸收残留的'\n'~

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

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-07-25 14:47
快速回复:C语言相关问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025535 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved