蒟蒻动态规划40分代码,请求大佬帮忙

P1958 上学路线

初始化的时候要判断该点是否在施工 ```cpp for(int i=1;i<=a;i++) if(t[i][1]==0) f[i][1]=1; for(int i=1;i<=b;i++) if(t[1][i]==0) f[1][i]=1; ```
by 丧黑福造 @ 2020-10-27 01:01:58


@[༺༒༻](/user/55740) 好的,谢谢啦!(〃'▽'〃)
by 明月几时有 @ 2020-10-27 19:58:13


@[༺༒༻](/user/55740) 但仍wa了两个点(灬ꈍ ꈍ灬)
by 明月几时有 @ 2020-10-27 20:00:42


@[明月几时有](/user/254764) 状态转移循环i从2开始
by 丧黑福造 @ 2020-10-27 20:10:55


@[༺༒༻](/user/55740) 额(⊙o⊙)… 只对了一个点了o(╥﹏╥)o
by 明月几时有 @ 2020-10-27 20:18:36


建议换一种状态,你那种状态边界比较难想 ```cpp #include <stdio.h> int f[20][20]; bool v[20][20]; main() { int a, b, n; scanf ("%d %d %d", &a, &b, &n); for (register int i = 1; i <= n; i ++) {int x, y; scanf ("%d %d", &x, &y); v[x][y] = 1;} f[1][1] = 1; for (register int i = 1; i <= a; i ++) for (register int j = 1; j <= b; j ++) if (!v[i][j]) f[i][j] += f[i-1][j] + f[i][j-1]; printf ("%d\n", f[a][b]); return 0; } ``` @[明月几时有](/user/254764)
by 丧黑福造 @ 2020-10-27 20:26:38


@[༺༒༻](/user/55740) 好的好的,ヽ( ̄▽ ̄)و,Thanks♪(・ω・)ノ
by 明月几时有 @ 2020-10-27 20:39:00


过了,谢谢dalao(❁´◡`❁)*✲゚*
by 明月几时有 @ 2020-10-27 20:42:52


@[明月几时有](/user/254764) 我这个0分(数学老师讲的求最短路径方法直接套的) ```cpp //DP解法 #include<bits/stdc++.h> using namespace std; int graph[40][40]; int main(){ int a,b,n; scanf("%d%d%d",&a,&b,&n); memset(graph,0,sizeof graph); for(register int i=0;i<n;++i){ int x,y; scanf("%d%d",&x,&y); graph[x][y]=0; } for(register int i=0;i<a;++i)graph[i][0]=1,graph[0][i]=1; //边界条件:graph[i][0],graph[0][i].由题意可得,其只有一条路径:直行 //状态:graph[x][y]表示从(0,0)走到(x,y)的方案数 //状态转移方程:graph[x][y]=graph[x-1][y]+graph[x][y-1](x>0,y>0) //最终答案:graph[a][b] //时间复杂度:O(ab) //空间复杂度:O(ab) for(register int x=1;x<a;++x) for(register int y=1;y<b;++y) graph[x][y]=graph[x-1][y]+graph[x][y-1]; cout<<graph[a][b]<<endl; return 0; } ```
by Enterprise_E @ 2021-11-06 21:20:05


|