zoukankan      html  css  js  c++  java
  • 2015 湘潭大学程序设计比赛(Internet)--G题-人生成就

    人生成就

    Accepted : 54   Submit : 104
    Time Limit : 10000 MS   Memory Limit : 65536 KB

    题目描述

    人生就像一个n*n的矩阵,矩阵每个元素都跟上下左右四个方向的元素联通,起始在左上角,终止在右下角,从起点开始,每次一个向右或向下移动一格。 每个元素上面都有一个人生成就值,表示你如果经历这个元素时候能增加的人生成就。 初始时候你的人生成就值为0,你当然想到达终点时候能获得最大的人生成就。那么问题来了:(你一定会以为我会要你求出到达终点时的最大人生成就值,但是你错了),问题就是,一共有多少条不同的路到终点时能达到最大的人生成就。

    输入

    约200个样例 每个样例的第一行为一个整数n(2 ≤ n ≤ 500),表示矩阵大小。以后的n行,每行n个整数cij表示这个矩阵, 0 ≤ cij ≤ 100。

    输出

    每行输出一个整数,最终的结果可能很大,请把结果对123456取模。

    样例输入

    3
    0 4 0
    2 3 0
    4 2 3
    4
    3 3 3 2
    2 0 0 0
    2 2 0 0
    2 4 4 3
    3
    3 3 3
    3 4 4
    4 4 3
    
    

    样例输出

    1
    2
    5
    

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #define N 550
    using namespace std;
    int a[N][N],dp[N][N],num[N][N];
    int main()
    {
    
        int i,j,n;
        while(scanf("%d",&n)!=EOF)
        {
            memset(a,0,sizeof(a));
            memset(num,0,sizeof(num));
            memset(dp,0,sizeof(dp));
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=n;j++)
                {
                    scanf("%d",&a[i][j]);
                }
            }
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=n;j++)
                {
                    dp[i][j]=max(dp[i-1][j]+a[i][j],dp[i][j-1]+a[i][j]);
                }
            }
            num[1][1]=1;
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=n;j++)
                {
                    if(a[i][j]==dp[i][j]-dp[i-1][j])
                        num[i][j]+=num[i-1][j];
                    if(a[i][j]==dp[i][j]-dp[i][j-1])
                        num[i][j]+=num[i][j-1];
                    num[i][j]%=123456;
                }
            }
            printf("%d
    ",num[n][n]);
        }
        return 0;
    }
  • 相关阅读:
    401. Binary Watch
    46. Permutations
    61. Rotate List
    142. Linked List Cycle II
    86. Partition List
    234. Palindrome Linked List
    19. Remove Nth Node From End of List
    141. Linked List Cycle
    524. Longest Word in Dictionary through Deleting
    android ListView详解
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/4460745.html
Copyright © 2011-2022 走看看