UVA 10285 - Longest Run on a Snowboard

DFS算法解析与实践
本文深入探讨了深度优先搜索(DFS)算法的应用实例,通过一个具体的问题场景展示了如何使用DFS来解决问题。文章提供了完整的C语言代码实现,并详细解释了代码中每一部分的功能与作用。

不知道过了多少天了,才做了一题,还是抄的,感觉我好失败啊!苦逼的菜鸟,还有很长的路要走……

不过我要严肃声明,凡是我贴出来的代码,都是我完全理解、能够自己独立敲出来的,并不是为了应付。

 1 #include<stdio.h>
 2 #include<string.h>
 3 int r,c,f[105][105],a[105][105];
 4 int dx[] = {0,0,1,-1},dy[] = {1,-1,0,0};
 5 int dfs(int x,int y)
 6 {
 7     int nx,ny,t,&ans = f[x][y];
 8     if(f[x][y] != 0) return f[x][y];
 9     ans = 1;
10     for(int i = 0; i < 4; i++)
11     {
12         nx = x + dx[i];
13         ny = y + dy[i];
14         if(nx > 0 && ny > 0 && nx <= r && ny <= c
15            && a[nx][ny] > a[x][y])
16         {
17             t = dfs(nx,ny);
18             if(t + 1 > ans)
19                 ans = t+1;
20         }
21     }
22     return ans;
23 }
24 int main()
25 {
26     int n,i,j,l,t,max;
27     char s[50];
28     scanf("%d",&n);
29     while(n--)
30     {
31         scanf("%s%d%d",&s,&r,&c);
32         l = strlen(s);
33         s[l] = max = 0;
34         memset(f,0,sizeof(f));
35         memset(a,0,sizeof(f));
36         for(i = 1; i <= r; i++)
37             for(j = 1; j <= c; j++)
38                 scanf("%d",&a[i][j]);
39         for(i = 1; i <= r; i++)
40             for(j = 1; j <= c; j++)
41             {
42                 t = dfs(i,j);
43                 if(t > max)
44                     max = t;
45             }
46         printf("%s: %d\n",s,max);
47     }
48     return 0;
49 }

 

转载于:https://www.cnblogs.com/lzxskjo/archive/2012/04/28/2475675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值