hdu 2125 Local area network

来源:互联网 发布:画化学结构式软件 编辑:程序博客网 时间:2024/05/16 05:59

1.题目

http://acm.hdu.edu.cn/showproblem.php?pid=2125

2.分析

类似二维阶梯的问题,只不过需要处理缺陷点的问题;注意缺陷点的横纵坐标的标识,不能想当然的自己感觉;动态规划所使用的决策:左边和下边的数值之和;

3.复杂度

空间复杂度O(MN);时间复杂度O(MN);

4.涉及内容

算法:动态规划

5.感想

类似二维阶梯的问题,感觉一些经典的题目需要反复做,来培养自己的感觉;

6.代码

#include <iostream>using namespace std;long f2125[40][40];void init2125(int n,int m,int &x1,int &y1,int &x2,int &y2){int tempxy;if(x1==x2 && y1>y2) { tempxy=y1;y1=y2;y2=tempxy; }else if(y1==y2 && x1>x2) { tempxy=x1;x1=x2;x2=tempxy; }memset(f2125,0,sizeof(f2125));f2125[0][0]=1;for(int i=1;i<n;++i)//行{f2125[i][0]=f2125[i-1][0];if(i==x2 && y2==0 && i-1==x1 && y1==0) f2125[i][0]=0;}for(int j=1;j<m;++j)//列{f2125[0][j]=f2125[0][j-1];if(0==x2 && y2==j && j-1==y1 && x1==0) f2125[0][j]=0;}}int main(){//freopen("in.txt","r",stdin);int n,m,x1,y1,x2,y2;while(cin>>n>>m){cin>>x1>>y1>>x2>>y2;init2125(n,m,y1,x1,y2,x2);for(int i=1;i<n;++i)//行for(int j=1;j<m;++j)//列{if(i==y2 && i-1==y1 && x1==j && x2==j) f2125[i][j]=f2125[i][j-1];else if(i==y2 && i==y1 && x1==j-1 && x2==j) f2125[i][j]=f2125[i-1][j];else f2125[i][j]=f2125[i-1][j]+f2125[i][j-1];}cout<<f2125[n-1][m-1]<<endl;}return 0;}

7.参考文献
原创粉丝点击