首页 > 其他分享 >23笔试真题:最长路径问题

23笔试真题:最长路径问题

时间:2024-03-16 21:33:44浏览次数:18  
标签:arr row 23 int 笔试 路径 真题 col size

输入一个数字n表示层数,在输入数字来表示三角形,要求三角形求解从顶到低的最长路径。

    7
   4 2
  1 6 0
 2 4 7 5
2 4 6 7 5

从第一层的 7 出发,走到第五层,求出经过路径和最长的路径和。要求使用递归与递推两种方法,并且按照下面的输入与输出设计程序。从上一层向下一层走的时候,只能走两边的路。如第三层的 6 ,那么下一层只能选择第四层的 4 或者 7 。

输入:

5
7 4 2 1 6 0 2 4 7 5 2 4 6 4 5

输出:

30
7
4 2
1 6 0
2 4 7 5
2 4 6 7 5

30
30
23 21
11 19 13
6 10 13 10
2 4 6 4 5

题目只给了这些,要求写函数体,补充main函数

#include <iostream>
using namespace std;

void print(int *arr, int size);
int *input(int size);
int digui(int *arr, int size, int row, int col);
int ditui(int *arr, int size);

int main(){
 
  return 0;
}

代码我这里为了方便没有写函数声明的形式

#include <iostream>
using namespace std;

int *input(int size){
    int *arr = new int[size];
    for(int i=0;i<size;i++){
        cin>>arr[i];
    }
    return arr;
}
void print(int *arr,int size){
    int index=0;
    for(int n=1;n <=size;n++){
        for(int i = 0;i < n;i++){
            cout << arr[index++] << " ";
        }
        cout << endl;
    }
    /*//这部分是我自己写的,搞复杂了
    int total = size*(size+1)/2;
    int now=0,cengshu=1,count=0;
    while(now<total){
        cout << arr[now] << " ";
        count++;now++;
        if(count == cengshu){
            cout << endl;
            count=0;
            cengshu++;
        }
    }*/
}

int digui(int *arr,int size,int row,int col){   //arr,size,0,0
    if(row == size) return 0;

    int num = arr[row*(row+1)/2+col];
    int left = digui(arr,size,row+1,col);
    int right = digui(arr,size,row+1,col+1);

    return left > right ? (num+left) : (num+right);
}

//这个用void也行 int ditui(int *arr,int size){ int col = size-1; int total = size*(size-1)/2-1; int count = 0; for(int i = total;i>=0;i--){ int num = arr[i+col] > arr[i+col+1] ? arr[i+col] : arr[i+col+1]; arr[i] = arr[i] + num; count++; if(count == col){ col--; count=0; } } return 0; } int main(){ int size;cin>>size; int *arr;arr = input(size*(size+1)/2); cout << digui(arr,size,0,0) << endl; print(arr,size); cout << endl; ditui(arr,size); cout << arr[0] << endl; print(arr,size); delete arr; }

之前做过 leetcode120. 三角形最小路径和 ,leetcode这道要求的是最小路径,是从上到下求的,用的是二维vector,要考虑边界条件。

而这道题要求的是最大路径,是从下到上求的,用的是一维数组,也要考虑边界条件,各种下标的对应的转换就特别麻烦了。我是看了一眼别人的思路自己写了出来。

 

标签:arr,row,23,int,笔试,路径,真题,col,size
From: https://www.cnblogs.com/uacs2024/p/18077659

相关文章

  • 使用c#实现23种常见的设计模式
     设计模式通常分为三个主要类别:创建型模式结构型模式行为型模式。这些模式是用于解决常见的对象导向设计问题的最佳实践。以下是23种常见的设计模式并且提供c#代码案例:创建型模式:1.单例模式(Singleton)publicsealedclassSingleton{//创建一个只读的静......
  • 2024年3月质量管理体系基础考试真题
    2024年3月质量管理体系基础考试真题一、单项选择题(每题1.5分,共60分)1.提高绩效的活动称为()。A.创新B.改进C.持续改进D.纠正措施2.基于风险的思维使组织能够确定可能导致其过程和质量管理体系偏离策划结果的各种因素,采取预防控制,最大限度地降低不利影响,并最大限度地()。......
  • Windos下在K230开发板上部署模型
    一、模型训练在嘉楠开发者社区进行模型训练,具体过程可参考b站视频和嘉楠官方流程 识图找“bug”:基于勘智K230实现昆虫检测任务_哔哩哔哩_bilibili嘉楠开发者社区二、镜像烧录在此处根据自己的板子下载对应的压缩包,然后解压得到镜像源。Releases·kendryte/k230_sdk......
  • ARC123
    C-1,2,3-Decomposition给定\(n\),找到最小的\(k\)使得存在\(\{a_k\}\)满足:\(a_i\)之和为\(n\)。\(a_i\)在十进制下的每个数位均为\(1,2,3\)。\(T\le1000\),\(1\len\le10^{18}\)。我怎么做出来这个题的?我们考虑对每个答案\(ans\)检查\(\operatorna......
  • 【2024年5月备考新增】《软考真题分章练习 - 5 项目进度管理(高项)》
    1、()isatechniqueforestimatingthedurationorcostofanactivityoraprojectusinghistoricaldatafromasimilaractivityorproject.A.AnalogousestimatingB.parametricestimatingC.Three-PointestimatingD.Bottomestimating2、下图中(单位:......
  • 计算机二级(Python)真题讲解每日一题:《绘制雪花》
    在横线处填写代码,完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬利......
  • 首师大附中集训D5日报(20231214)-总结部分
    今天做了6道题,还可以,剩下的基本是一点都不会了,太难了,等我理解再深刻一点再回来做一下吧今天有几道题是完全靠自己想出来的了,挺好一会把前几天的专题再补一下昨天的做题的讲题彻底打醒了我,我什么都不是,我照我需要达到的高度差远了我来这里不就是为了这个的吗既然经受了大幅度......
  • 首师大附中集训D6日报(20231215)-比赛总结部分
    爆零做t1上头了,状态设计思路没啥问题,但是把问题复杂化了,维护了然后下午又上头了,对着一坨矩阵调一下午,哎t2属于读题问题,完全没有意识到这个是最小生成树,所以转化能力真的很重要t3骗链部分,但是拿了堆维护,后来一看,复杂度爆了,得拿主席树t1,t2改掉了,t3留待后面吧,涉及一个四毛子有点......
  • 首师大附中集训D7日报(20231216)-总结部分
    今天讲dp,切题9/28,dp是一个庞杂的,成体系的知识,因此今日总结不以题解为主,而以知识点和涉及到的例题为主,题解参考笔记和pptDP1.背包问题都到了这个层次了背板子不可能有问题,主要是对于背包问题本质的理解。背包问题的转移说白了就是最普通的线性转移,并且是表现出无序性的,比如这道......
  • 首师大附中集训D6日报(20231215)-题解部分
    T1是dp设fi0不含k的情况书fi1含k的情况数第一步优化:前缀和维护f两个数组的前缀和通过前缀转移第二步优化:发现前缀和能矩阵乘法优化,所以矩阵快速幂就可以说起来挺简单,式子也不算难推,但就特别难写,主要的难度在于设置矩阵上面T2不知怎么一直卡在35,但是打的总体上肯......