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;
    }
    

      

  • 相关阅读:
    根据不同的窗口尺寸来选择不同的样式
    用JavaScript检测视频格式支持
    用JavaScript检测音频格式支持
    C#取整函数Math.Round、Math.Ceiling和Math.Floor
    asp.net在同一页面跳转到指定位置
    对存储过程进行加密和解密
    各种SQL语句
    centos7.2安装nginx
    springboot利用mock进行junit单元测试,测试controller
    centos7环境搭建一台mysql服务器启动多个端口
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7919935.html
Copyright © 2011-2022 走看看