NC18355. 路径数量
描述
输入描述
第1行两个数n,k (20 ≤n ≤ 30,1 ≤ k ≤ 10)
第2行至第n+1行,为一个邻接矩阵
输出描述
题目中所求的数目
示例1
输入:
4 2 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
输出:
2
说明:
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 480K, 提交时间: 2018-09-07 19:51:00
#include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;i++) int a[40][40]; long long dp[40][40]; int main() { int n,k; cin >> n >> k; rep(i,1,n) rep(j,1,n) cin >>a[i][j]; dp[0][1]=1; rep(i,1,k) rep(s,1,n) rep(e,1,n) if(a[s][e]) dp[i][e] += dp[i-1][s]; cout << dp[k][n]; }
Pascal(fpc 3.0.2) 解法, 执行用时: 1ms, 内存消耗: 256K, 提交时间: 2018-09-12 19:08:28
var f,map:array[0..100,0..100] of int64; n,k,i,j,h:longint; begin readln(n,k); for i:=1 to n do for j:=1 to n do read(map[i,j]); f[0,1]:=1; for h:=1 to k do for i:=1 to n do for j:=1 to n do if map[i,j]=1 then f[h,j]:=f[h,j]+f[h-1,i]; writeln(f[k,n]); end.