【hpu oj 1015 985的方格难题 [DP、数学] 】

xiaoxiao2021-02-28  98

点击打开链接

/* 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 先打表,然后 ,总数减去通过被破坏的点到达终点的数 */ #include<cstdio> #include<cstring> #include<algorithm> #define Maxn 1000000007 using namespace std; typedef long long LL; LL grid[31][31]; LL n,x,y,i,j; void Reset() { for(i=1;i<31;i++) grid[i][1]=1; for(i=1;i<31;i++) grid[1][i]=1; for(i=2;i<31;i++) for(j=2;j<31;j++) grid[i][j]=grid[i-1][j]+grid[i][j-1]; return ; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&x,&y); Reset(); if(x==1&&y==1||x==n&&y==n) { printf("-1\n"); continue; } LL ans=grid[n][n]-grid[x][y]*grid[n-x+1][n-y+1];//总数减去通过被破坏的点到达终点的数 printf("%lld\n",ans%Maxn); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-44637.html

最新回复(0)