제출 #1329005

#제출 시각아이디문제언어결과실행 시간메모리
1329005Muhammad_AneeqJump (BOI06_jump)C++20
25 / 100
7 ms1060 KiB
#include <bits/stdc++.h>
using namespace std;
int const N=110;
string dp[N][N]={};
string add(string a,string b)
{
    string c;
    while (a.size()<b.size())
        a='0'+a;
    while (a.size()>b.size())
        b='0'+b;
    int sz=a.size();
    bool cr=0;
    for (int i=sz-1;i>=0;i--)
    {
        int sm=a[i]-'0'+b[i]-'0'+cr;
        cr=sm/10;
        sm%=10;
        c+=char('0'+sm);
    }
    if (cr)
        c+='1';
    reverse(begin(c),end(c));
    return c;
}
inline void solve()
{
    int n;
    cin>>n;
    int a[n][n];
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
        {
            cin>>a[i][j];
            dp[i][j]="0";
        }
    dp[0][0]="1";
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        {
            if (a[i][j]==0) continue;
            for (int k=0;k<=a[i][j];k++)
            {
                int r=i+k;
                int c=j+a[i][j]-k;
                if (r<n&&c<n)
                    dp[r][c]=add(dp[r][c],dp[i][j]);
            }
        }
    }
    cout<<dp[n-1][n-1]<<endl;
}
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...