初始化的时候要判断该点是否在施工
```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