zoukankan      html  css  js  c++  java
  • 44-最大差值三角形

                      最大差值数字三角形 (20分)
    题目内容:
    给定一个由n行数字组成的数字直角三角形,每行多一个元素:
    a
    b c
    d e f
    试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字差距最大。
    计算路径时,上一行的一个元素只与下一行正下方的元素,或者其右的元素相连。如a与bc,b与de, c与ef.

    最大数字差: 一个路径经过(2,1,2,3,7),则最大数字差是7-1=6
    输入描述:
    第1行输入行数n(n<100)
    下面的n行构成数字三角形,第2行一个整数,以后每一行比上一行多一个整数。

    输出描述:
    最大的路径数字差.

    输入样例:
    5
    2
    1 3
    2 4 5
    6 3 6 8
    3 7 5 4 2

    输出样例
    6

    思路:结构体+dp

    #include <iostream>
    using namespace std;
    typedef struct{
    	int mi;
    	int ma;
    }Node;
    int n;
    Node a[105][105];
    Node dp[105][105];
    
    Node f(int x, int y){
    	if(x == n){
    		return dp[x][y] = a[x][y];
    	}	
    	if(x < 1 || x > n || y < 1 || y > x + 1)
    		return a[0][0];
    	int d1, d2;
    	Node s1, s2, s;
    	s = a[x][y];
    	s1 = f(x + 1, y); s2 = f(x + 1, y + 1);
    	d1 = max(s1.ma, s.ma) - min(s1.mi, s.mi);
    	d2 = max(s2.ma, s.ma) - min(s2.mi, s.mi);
    	if(d1 < d2){
    		dp[x][y].mi = min(s2.mi, s.mi);
    		dp[x][y].ma = max(s2.ma, s.ma);
    		return dp[x][y];
    	}
    	else{
    		dp[x][y].mi = min(s1.mi, s.mi);
    		dp[x][y].ma = max(s1.ma, s.ma);
    		return dp[x][y];
    	}
    }
    
    int main(){
    	cin >> n;
    	for(int i = 1; i <= n; i++){
    		for(int j = 1; j <= i; j++){
    			cin >> a[i][j].mi;
    			a[i][j].ma = a[i][j].mi;
    		}
    	}
    	f(1, 1);
    	cout << dp[1][1].ma - dp[1][1].mi << endl;
    	//for(int i = 1; i <= n; i++){
    	//	for(int j = 1; j <= i; j++){
    	//		cout << dp[i][j].ma << " " << dp[i][j].mi << ";  ";
    	//	}
    	//	cout << endl;
    	//}	
    	return 0;
    }
    

      

  • 相关阅读:
    左孩子右兄弟的字典树
    UVA 1401 Remember the Word
    HDOJ 4770 Lights Against Dudely
    UvaLA 3938 "Ray, Pass me the dishes!"
    UVA
    Codeforces 215A A.Sereja and Coat Rack
    Codeforces 215B B.Sereja and Suffixes
    HDU 4788 Hard Disk Drive
    HDU 2095 find your present (2)
    图的连通性问题—学习笔记
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7919935.html
Copyright © 2011-2022 走看看