Re: [问题] 可停留的路线安排程式

楼主: outofyou   2016-12-15 10:59:49
不知道有没有漏看一些讯息,用程式码表示我粗浅的想法。
int map[M][M]={0}; //盘面
int table[N+1][M][M]={0}; //DP表格
//设定初始盘面
map[0][0]=40;
map[0][1]=30;
/*
.
.
.
*/
//设定第一天的各种可能情况
for(int i=-1;i<=1;++i)
{
for(int j=-1;j<=1;++j)
{
table[1][M/2+i][M/2+j]=map[M/2+i][M/2+j];
}
}
//开始填表
for(int i=2;i<=N;++i)
{
for(int j=0;j<M;++j)
{
for(int k=0;k<M;++k)
{
table[i][j][k]=findMax(map,table,i,j,k);
}
}
}
int findMax(int map[M][],int table[N+1][M][],int i,int j,int k)
{
//填空
//需处理边界问题
//需处理当天不能走到的点,在此范例假设table值为0代表无法走到,当天不能走到的
点为table值前一天相邻点皆为0的点。
return max;
}
※ 引述《DJWS (...)》之铭言:
: ※ 引述《jakeasa123 (啊斑斑)》之铭言:
: :   先前在Python板发了篇文,也获得了一些提示,但看了好几天也试做了几个版本,还是没能达到目标,于是来此询问。
: :   Python板原文:https://www.ptt.cc/bbs/Python/M.1480482142.A.713.html
: 1. 养不教,父之过。教不严,师之惰。
: 不必同情老师和同学。他们都有问题。
: 2. 原文的推文都在状况外。
: 3. 你的问题可以粗略分成程式问题、算法问题。
: 4. 程式问题就是语文问题,另含一点点数学问题。
:   程式语言变化少,只有for if array recursion,通常都有前例可循,其实不难。
:   由于你没有提供程式码,这里假设你没有程式方面的问题。
: 5. 算法问题就是数学问题。
: 数学问题最困难的地方,就是变化太多、往往没有前例可循。
: 比方说,在几何图形上画一条补助线,问题豁然开朗,根本莫名其妙。
:   即便背熟算法课本,遇到新的算法问题,通常还是解不开,不必自责。
:  
: 6. 这一题的特色是:
: (1) 分阶段:分成一天一天,每天做一件事。
: (2) 有因果:今天的位置,决定了明天的位置(在九宫格内)。
: (3) 可累积:今天的收益,以后列入总收益。
:   通常这种题型,可以用dynamic programming解决。
:   盘面拷贝数份,叠起来,变成三维。
:   一天换一个盘面,往上方走去。
:   程式码有:一个二维阵列(盘面),两个二维阵列(dp表格),四层循环(填表格)
: 7. 为什么我会知道那些特色呢?
:   书读多了、问题看多了,依照经验归纳出来的。
: 这些特色在不同地方有不同称呼:
:   例如算法课本里面的词汇是“optimal substructure”
:  例如竞赛选手所用的词汇是“无后效性”“状态转移”
:   那些特色已经形成了SOP了吗?
:   就我所知没有。只能自己看着办。
: . 为什么我能联想到dp呢?
:   因为我曾经遇过类似题目,运气好。
: 8. 数学问题不只一种解法,这个问题也不只一种解法。
:   如果你想掌握各种解法:
: (1) 靠别人:找一个懂的人,跟他交朋友。往后若有需要,靠交情、花钱请他帮忙。
: (2) 靠自己:读懂各类算法课程、书籍、论文,情况许可就再念个phd。
: 9. 获得了“掌握各种解法”的实力之后,有什么用呢?
:  我看过的有:为兴趣、为面试、为逞英雄、为练脑力、为消遣。
:   每个人状况不一样,我没有办法评论。
: 10. 你们老师同学,也许都想到了这个份上。
: 可能他们已经获得了“掌握各种解法”的实力。
:   可能他们不想获得这种实力,因为没用处、因为关注其他实力、因为太弱、...。
:   因此他们各方评估后,决定简单教、随便学就好。
:   与其说他们都有问题,不如说他们都有心思。
楼主: outofyou   2016-12-15 11:28:00
这题可以设一个停止填表的中断点,就是已填表格数(天数)^^^对不起,好像不能确定,是我乱讲可以确定的是有最大值的那一格的累积值也已最大的时候。

Links booklink

Contact Us: admin [ a t ] ucptt.com