题目描述
第1行两个数n,k (20 ≤n ≤ 30,1 ≤ k ≤ 10)
第2行至第n+1行,为一个邻接矩阵
题目中所求的数目
1-2 1-2-3-2
到2的步数都是不同的
所以我们要枚举步数的情况
#include<cstdio> #include<cstring> int a[50][50]; long long f[50][50]; int main() { f[1][0]=1; int n,k; scanf("%d%d",&n,&k); for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) scanf("%d",&a[i][j]); for(int i=1;i<=k;++i) for(int j=1;j<=n;++j) for(int t=1;t<=n;++t) if(a[j][t])//如果 j到t 有一条路 如果当前我们走到j点是x步,那么我们只要把t点的x+1步的值加上当前的j点的值即可 f[t][i]+=f[j][i-1]; printf("%lld\n",f[n][k]); return 0; }
原文:https://www.cnblogs.com/Lis-/p/9609469.html