数字三角形 要求走到最后mod 100最大
标签:
题目描述
数字三角形 要求走到最后mod 100最大
输入
第1行n,表示n行 < =25 第2到n+1行为每个的权值
输出
mod 100最大值
样例输入
2 1 99 98
样例输出
99
#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <ctime> #include <cstring> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; #define X first #define Y second #define mp(a,b) make_pair(a,b) #define pb push_back #define sd(x) scanf("%d",&(x)) #define Pi acos(-1.0) #define sf(x) scanf("%lf",&(x)) #define ss(x) scanf("%s",(x)) #define maxn 50005 const int inf=0x3f3f3f3f; const ll mod=1000000007; bool dp[30][30][100]; int num[30][30]; int main() { #ifdef local freopen("in","r",stdin); //freopen("out","w",stdout); int _time=clock(); #endif int n; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) cin>>num[i][j]; } dp[1][1][num[1][1]]=1; for(int i=2;i<=n;i++) { for(int j=1;j<=i;j++) { for(int mod=0;mod<100;mod++) { if(dp[i-1][j][mod]||dp[i-1][j-1][mod]) dp[i][j][(mod+num[i][j])%100]=1; } } } for(int mod=99;mod>=0;mod--) { for(int j=1;j<=n;j++) { if(dp[n][j][mod]) { cout<<mod<<endl; return 0; } } } #ifdef local printf("time: %d\n",int(clock()-_time)); #endif }
标签:
原文地址:http://www.cnblogs.com/scau-zk/p/5639128.html