c++笔试题贪吃蛇问题

贪吃蛇

现在有一个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[100][100],best[100][100],n,m;
//value里面存储每个格子的值
//best 存储走到当前格子的最大值
//m,n为格子大小100*100

void initvalue()
{
    for(int i=0;i<m;i++)
        for(int j=1;j<n;j++)
    {
        srand(unsigned(time(NULL)));
        value[i][j]=(rand()%(1000-1+1))+1;//[a,b]
    }
    value[0][0]=0;

}

int searchmaxvalue()
{
    best[0][0]=0;
    for(int i=1;i<m;i++)
    {
        best[i][0]=value[i][0]+best[i-1][0];
    }
    for(int j=1;j<n;j++)
    {
        best[0][j]+=value[0][j]+best[0][j-1];
    }
    for(int i=1;i<m;i++)
        for(int j=1;j<n;j++)
    {
        best[i][j]=value[i][j]+max(best[i-1][j],best[i][j-1]);
    }
    return best[m-1][n-1];

}

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(99,99);
    while(!st.empty())
    {
        cout<<st.top()<<"__";
        st.pop();
        cout<<st.top();
        st.pop();
        cout<<endl;

    }
}

int main()
{

  m=100;
   n=100;
   initvalue();
   int bestvalue=searchmaxvalue();

   cout<<bestvalue;
   print();
   //先初始化价值矩阵之后,计算最大价值矩阵,然后输出路径

}

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

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

时间: 2024-10-09 16:23:36

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

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

1.面向对象贪吃蛇 2.css中:hover 改变图片 页面加载完 第一次鼠标移入会闪一下 这是为啥? 解决方法:你把两张图合成一张图或者是先把图片加载到页面上,然后再hover出来. 解析:图片改变了,不管网速快慢它都有个加载时间. 3.好的canvas动画工具 或者游戏的推荐: 解决方法:工具推荐-1&工具推荐-2 4.下面代码为什么在Chrome下会报错? var log = console.log; log("test"); 解决方法:改为以下代码 log = cons

基于C#开发的简易贪吃蛇

最近一直忙着11月份软考的复习,一直没有练习C#.觉得对于一个新手,长时间不练肯定不行,所以觉得敲敲代码练练手.刚好电脑磁盘里有以前Down的C#开源游戏,于是挑中了贪吃蛇,来练练手. 贪吃蛇游戏界面如下: 为了实现贪吃蛇,一共写了四个类,分别是: 1)Bean:食物类,就是玩家要吃的那个食物,里面实现了两个方法:食物的显示与食物的消失(因为食物被吃了以后应该消失) 2)Block:蛇块类,就是组成蛇的单元,玩家吃到食物,蛇的蛇块增加一节. 3)Snake:蛇类,游戏中的主角,玩家通过上下左右四

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).

安卓贪吃蛇项目包!!

我在博客上看见很多有关于安卓开发贪吃蛇的博文,但是都不知道他们所用的软件.版本是什么,所以在自己下载的软件上运行的时候总是出不来结果,作为一只安卓课程老师只上了一节课就让我们自己做课程设计的菜鸟来说,这是何其困哪的一件事,安卓什么也不懂,运行环境也是一点也不熟悉.我们老师要求我们用eclipse来运行,有没有人是用这个做过的啊?求帮助!!真的是不会了,找了很多的项目包运行的时候都会出错,永远不会出现贪吃蛇的界面,宝宝真的快疯了.还附上了我所用的软件,有没有好心人解答下这个问题. 本来打算私聊项目

JS贪吃蛇游戏

<!DOCTYPE html><html> <head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <title>JS贪吃蛇游戏</title>    <style>    * {        margin: 0;    

Java版贪吃蛇(比较完善的版本)

很认真的写的一个java版的贪吃蛇游戏,图形界面,支持菜单操作,键盘监听,可加速,减速,统计得分,设定运动速度,设定游戏背景颜色等!应该没有Bug了,因为全被我修改没了.哈哈. 下面是项目各包及类的层次关系: 游戏的主要运行界面截图如下: 下面是部分代码,详细源码见此链接:http://pan.baidu.com/s/1bnubnzh //Snake类: package com.huowolf.entities; import java.awt.Color; import java.awt.Gr

UESTC_贪吃蛇 CDOJ 709

相信大家都玩过贪吃蛇游戏吧. 在n×m的迷宫中,有着一条长度不超过9的贪吃蛇,它已经将所有的食物吃光了,现在的目标是移动到出口. 它走的时候不能碰到自己的身体,也不能碰到墙壁.(如果贪吃蛇的长度>3并且下一步要走到自己的尾部,是合法的) 问它能不能走到出口,如果能,最少要移动几步? Input 数据包含多组数据,请读入到文件末尾EOF 每组数据第一行包含两个整数n,m(1≤n,m≤15)代表迷宫的大小. 接下来n行,每行包含一个长度为m的字符串,来表示迷宫. 字符串中仅包含..#.@.1 ~ 9

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

javascript之【贪吃蛇系列】第一弹:简单的贪吃蛇实现

参考博客:http://blog.csdn.net/sunxing007/article/details/4187038 以上博客是参考,毕竟第一次做,真让自己盲人摸象做不出来. 不过我在其上做了一些改进,界面等效果看起来更好一些. 下图是在Chrome上运行的效果,但是火狐和IE会不兼容,onkeydown事件不能正确调用 这里用了一张图把贪吃蛇制作过程的思想画了出来,画的有点简陋: 下面就是把代码发上来,上边有详细的解释: <html> <head> <title>