试题 算法提高 最大值路径

资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

  刷微博,编程序。如下图所示,@北京发布 提出了如下“头脑震荡”问题。对此问题做一般化描述:

  有n阶方阵,从矩阵的左下角元素为起点,从行或列(水平或垂直)两个方向上移动,直到右上角。求出有多少条路径可以使得经过的元素累加值最大,最大值是多少。



输入格式

  共有n+1行。

  第一行整数n,表示矩阵的阶数,2<=n<=10。

  第二行起,每行n个整数,以空格分隔,共n行。。

输出格式

  一行,两个空格分隔的数,第一个表示最大值路径的条数,第二个表示最大值。

样例输入

5

4 5 4 5 6

2 6 5 4 6

2 6 6 5 2

4 5 2 2 5

5 2 5 6 4

样例输出

3 47

 

import java.util.Scanner;

public class 最大值路径 {
static int m;
//看看这条路走过没有
static boolean [] [] visit ;
//放地图
static int [] []a;
//值相同的路数 值
static int k=0,f=0;
//四个方向
static int p[][]={{-1,0},{1,0},{0,-1},{0,1} };
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
m = sc.nextInt();
a= new int[m][m];
for (int i=0;i<m;i++){
for (int j=0;j<m;j++){
a[i][j]=sc.nextInt();
}
}
visit = new boolean[m][m];
dfs(a,m-1,0,1,a[m-1][0]);
System.out.println(k+" "+f);
}
// 地图 x坐标 y坐标 想用路径的有多少条路 最大值元素累加
public static void dfs(int a[][],int i,int j,int route,int sum){
if(route>2*m-1)
return ;
if(visit[i][j]==true)
return ;
if(i==0&&j==m-1)
if(route!=2*m-1)
return ;
if(route==2*m-1)
{
if(i==0&&j==m-1)
{
if(sum>f)
{
f=sum;
k=1;
}
else if(sum==f)
k++;
}
else
return ;
} visit[i][j]=true;
for(int t=0;t<4;t++)
{
int x,y;
x=i+p[t][0];
y=j+p[t][1];
if(x>=0&&x<m&&y>=0&&y<m&&visit[x][y]==false)
{
route++;
sum+=a[x][y];
// cout<<a[x][y]<<" ";
dfs(a,x,y,route,sum);
sum-=a[x][y];
visit[x][y]=false;
route--;
}
}
}
}

Java实现 蓝桥杯 算法提高 最大值路径的更多相关文章

  1. Java实现 蓝桥杯算法提高 求最大值

    算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...

  2. Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)

    试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...

  3. Java实现 蓝桥杯 算法提高 小X的购物计划

    试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...

  4. Java实现 蓝桥杯 算法提高 最长滑雪道

    试题 算法提高 最长滑雪道 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小袁非常喜欢滑雪, 因为滑雪很刺激.为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上 ...

  5. Java实现 蓝桥杯 算法提高 学霸的迷宫

    算法提高 学霸的迷宫 时间限制:1.0s 内存限制:256.0MB 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二 ...

  6. Java实现 蓝桥杯 算法提高 数组求和

    试题 算法提高 数组求和 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少? 输入格式 输入的第一行包含两个整数n, ...

  7. Java实现 蓝桥杯 算法提高 天天向上(DP)

    试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...

  8. Java实现 蓝桥杯 算法提高 欧拉函数(数学)

    试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...

  9. Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)

    试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...

随机推荐

  1. [acdream_oj1732]求1到n的最小公倍数(n<=1e8)

    题意:如标题 思路:如果n在10^6以内则可以用o(nlogn)的暴力,题目给定的是n<=1e8,暴力显然是不行的,考虑到1到n的最小公倍数可以写成2^p1*3^p2*5^p3*...这种素数的 ...

  2. [hdu5195]线段树

    题意:给一个DAG,最多可以删去k条边,求字典序最大的拓扑序列.思路:贪心选取当前可选的最大编号即可,同时用线段树维护下.一个节点可以被选,当且仅当没有指向它的边. #include <iost ...

  3. Hive环境搭建和SparkSql整合

    一.搭建准备环境 在搭建Hive和SparkSql进行整合之前,首先需要搭建完成HDFS和Spark相关环境 这里使用Hive和Spark进行整合的目的主要是: 1.使用Hive对SparkSql中产 ...

  4. js 获取URL后面传的参数

    function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new O ...

  5. java方法调用顺序

    public class JavalearningApplicationTests { static { System.out.println("Test的静态代码块"); } p ...

  6. 我的linux学习日记day2

    RPM  软件包管理器 目的:降低软件安装难度原理 :将软件源代码加上一套安装规则打包到一起,用户只需要运行RPM systemctl start 服务名称 开启服务systemctl stop 服务 ...

  7. React-Redux填坑

    这篇东西以后慢慢补充. Q:今天遇到一个问题是 TypeError:dispatch is not a function A:一直报这个type error,调试了好一阵,最后在tof上看到网友说co ...

  8. 基于elementUI使用v-model实现经纬度输入的vue组件

    绑定一个 [12.34,-45.67] (东经西经,南纬北纬 正负表示) 形式的经纬度数组,能够按度分秒进行编辑,效果如下所示,点击东经,北纬可切换. 经纬度的 度转度分秒 能够获取度分秒格式数据 C ...

  9. 笔记二(JavaWeb)

    上一个笔记写的好累,这次换Markdown试试 缺省适配器设计模式:父类不实现该方法,让子类去实现(抽象方法) 模板方法设计模式:定义一个操作中的方法骨架,而将一些步骤延迟到子类中.模板方法使得子类可 ...

  10. 201771010128王玉兰《面向对象程序设计(Java)》第十六周学习总结

    第一部分:理论基础 1.线程的概念 进程:进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程.  多线程:多线程是进程执行过程中产生的多条执行线索.  线程:线程是比进程执行 ...