贪吃蛇

现在有一个N*M(N,M=100)的方形矩形,在这个矩形的每一个方格上都放有一个随机值,一条可爱的小蛇从矩形的 左上角开始出发,每次移动都只能移动一格,向右或向下,而每到达一格贪吃的小蛇都会吧该位置上的值吃个一干二净,直到到达右下角时停止。而贪吃的小蛇不怕撑死,它只想吃到最多,并输出路径。

#include <iostream>
#include<string>
#include <cstring>
#include<vector>
#include<sstream>
#include<algorithm>
#include <stdlib.h>
#include <stdio.h>
#include<stack>
#include<ctime>
using namespace std; stack<int> st;
int value[][],best[][],n,m;
//value里面存储每个格子的值
//best 存储走到当前格子的最大值
//m,n为格子大小100*100 void initvalue()
{
for(int i=;i<m;i++)
for(int j=;j<n;j++)
{
srand(unsigned(time(NULL)));
value[i][j]=(rand()%(-+))+;//[a,b]
}
value[][]=; } int searchmaxvalue()
{
best[][]=;
for(int i=;i<m;i++)
{
best[i][]=value[i][]+best[i-][];
}
for(int j=;j<n;j++)
{
best[][j]+=value[][j]+best[][j-];
}
for(int i=;i<m;i++)
for(int j=;j<n;j++)
{
best[i][j]=value[i][j]+max(best[i-][j],best[i][j-]);
}
return best[m-][n-]; } void Pu(int n, int m) {
st.push(n);
st.push(m);
if (n == 0 && m == 0)
return;
else if (n == 0 && m > 0)
Pu(n, m-1);
else if (n > 0 && m == 0)
Pu(n-1, m);
else {
if (best[n-1][m] > best[n][m-1])
Pu(n-1, m);
else
Pu(n, m-1);
}
}
void print()
{
Pu(,);
while(!st.empty())
{
cout<<st.top()<<"__";
st.pop();
cout<<st.top();
st.pop();
cout<<endl; }
} int main()
{ m=;
n=;
initvalue();
int bestvalue=searchmaxvalue(); cout<<bestvalue;
print();
//先初始化价值矩阵之后,计算最大价值矩阵,然后输出路径 }

路径输出的地方有点问题。自己还没解决,解决后更新,动态规划问题,乐道笔试题。

红色的部分为借鉴部分,有一点问题。望指导

c++笔试题贪吃蛇问题的更多相关文章

  1. 算法题16 贪吃的小Q 牛客网 腾讯笔试题

    算法题16 贪吃的小Q 牛客网 腾讯笔试题 题目: 链接:https://www.nowcoder.com/questionTerminal/d732267e73ce4918b61d9e3d0ddd9 ...

  2. 2015.4.23 贪吃蛇、canvas动画,各种上传工具,url信息匹配以及最全前端面试题等

    1.面向对象贪吃蛇   2.css中:hover 改变图片 页面加载完 第一次鼠标移入会闪一下 这是为啥? 解决方法:你把两张图合成一张图或者是先把图片加载到页面上,然后再hover出来. 解析:图片 ...

  3. 对Thoughtworks的有趣笔试题实践

    记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...

  4. 从阿里巴巴笔试题看Java加载顺序

    一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...

  5. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  6. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  7. C#经典笔试题-获取字符串中相同的字符以及其个数

    public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...

  8. flhs笔试题-回家上机实践

    这是最近参加的一个公司的笔试题,回家上机写了下代码,希望对有需要的小伙伴有用,简单实现字符串和数组在指定位置的插入: package org.flhs; import com.google.commo ...

  9. 用C++实现的贪吃蛇游戏

    我是一个C++初学者,控制台实现了一个贪吃蛇游戏. 代码如下: //"贪吃蛇游戏"V1.0 //李国良于2016年12月29日编写完成 #include <iostream& ...

随机推荐

  1. 机器学习进阶-疲劳检测(眨眼检测) 1.dist.eculidean(计算两个点的欧式距离) 2.dlib.get_frontal_face_detector(脸部位置检测器) 3.dlib.shape_predictor(脸部特征位置检测器) 4.Orderdict(构造有序的字典)

    1.dist.eculidean(A, B) # 求出A和B点的欧式距离 参数说明:A,B表示位置信息 2.dlib.get_frontal_face_detector()表示脸部位置检测器 3.dl ...

  2. cx_Oracle.DatabaseError: DPI-1047

    ODPI-C Installation¶ Overview Oracle Client and Database Versions Linux Oracle Instant Client Zip Or ...

  3. leetcode ex3 找出穿过最多点的直线 Max Points on a Line

    题目 https://oj.leetcode.com/problems/max-points-on-a-line/ 答案与分析 http://www.aiweibang.com/yuedu/18326 ...

  4. Linux下tomcat运行命令

    tomcat启动 [root@master webapps]# /usr/local/tomcat7.0/bin/catalina.sh start startup.sh的源代码,其实就是执行   c ...

  5. 趣味编程:静夜思(Swift版)

    func verticalWriting(txt:String, offset:Int) { Dictionary(grouping: txt.enumerated(), by: {$0.0 % of ...

  6. vue项目插入视频-mp4

    1. v.vue文件: <template> <div> <div class="contain"> <my-video :sources ...

  7. 2018软件工程W班助教小结博客

    一.总体回顾 我是汪老师实验室的研二的一名研究生,在研一的课程中就上过老师带的高级软件工程(采取的模式是一样的,亲身经历了一学期所以对整体流程比较清楚).实验室的学生当老师实践课的助教是这几年流传下来 ...

  8. 29.Junit测试框架.md

    目录 作用 使用 单个对象的测试 有步骤的测试 注意 作用 用于简化测试,可以对方法,类,包等范围测试 使用 单个对象的测试 在需要测试的方法上加注解@Test,选中方法,运行里选择junit执行 同 ...

  9. Kubernetes 本地仓库

    1.Kubernetes本地私有仓库 Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库.使用私有仓库有如下优点: 1)节省 ...

  10. 内核进程切换 switch_to

    参考: http://www.cnblogs.com/visayafan/archive/2011/12/10/2283660.html