UVA 825

来源:互联网 发布:前端优化方法 编辑:程序博客网 时间:2024/05/22 03:32

  题意是给定一个矩阵,其中一些节点不能走,求最短路径数,可知最短路径为左上角到右下角的曼哈顿距离,所以每个点只能向下或向右走,判断其上节点和左节点是否可行即可。

#include <iostream>#include <cstring>#include <cstdio>using namespace std;bool m[1000][1000];int dp[1000][1000];int main(){int T;cin>>T;while(T--){memset(m,true,sizeof(m));memset(dp,0,sizeof(dp));for(int i=1;i<1000;i++) m[0][i]=m[i][0]=false;int w,n,r;cin>>w>>n;getchar();for(int i=1;i<=w;i++){cin>>r;char t;int num=0;while((t=getchar())){if(t==' ') {m[i][num]=false;num=0;}else if(t=='\n') {m[i][num]=false;break;}else num=num*10+t-'0';}}dp[1][1]=1;for(int i=1;i<=w;i++)for(int j=1;j<=n;j++){if(m[i][j-1]) dp[i][j]+=dp[i][j-1];if(m[i-1][j]) dp[i][j]+=dp[i-1][j];}cout<<dp[w][n]<<endl;if(T) cout<<endl;}return 0;}


 

0 0
原创粉丝点击