#include<bits/stdc++.h>
using namespace std;
int dp[33][51];//記錄從起點到此點之距離的方法數
char mp[33][33];
int main(int argc, char** argv) {
int n,f,t,d;
while(cin>>n){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>mp[i][j];
memset(dp,0,sizeof(dp));
cin>>f>>t>>d;
f--;t--;
dp[f][0]=1;//從自己開始距離為零方法一種
for(int k=1;k<=d;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(mp[j][i]-'0')
dp[i][k]+=dp[j][k-1];//如果J可連到I就加上去走到I的方法數
int ans=0;
for(int i=0;i<=d;i++)
ans+=dp[t][i];
cout<<ans<<'\n';
}
return 0;
}
給解釋,不要給 AC code 啦