剑侠情缘网络版

标题: 最省钱种树方法计算器(第三版,修正之前错误) [打印本页]

作者: 帛裂七弦    时间: 2010-5-6 00:32
标题: 最省钱种树方法计算器(第三版,修正之前错误)
本帖最后由 帛裂七弦 于 2010-5-8 20:43 编辑

谢谢邂逅MM [jx01] ~~~

实现原理:
感兴趣的同学可以在这里参与讨论:
http://topic.csdn.net/u/20100507/20/df91510c-fb91-439c-8980-d614b05e99b5.html?seed=2077686354&r=65276594#r_65276594

下载地址(第三版):
http://u.115.com/file/t7beb99394
作者: 小妹妹℃1    时间: 2010-5-6 00:38
[jx10]~~~~
作者: 轩辕小白龙    时间: 2010-5-6 01:57
楼主学编程的吗,把精灵程序改一下吧,一个多星期没更新了呢.
作者: 帛裂七弦    时间: 2010-5-6 06:41
这个算法效率还比较低下,有时候要等1分钟才能出结果。
有空俺再想想有没更好的算法。
作者: 谁啊我啊    时间: 2010-5-6 07:53
.....怎么打不开
作者: 126区猪能能    时间: 2010-5-6 08:28
有没有考虑。×2 和+2、-2的付出价值是不一样的。
一次翻倍所付出的资金是加二、减二的5倍。
作者: 添酒忆明眸    时间: 2010-5-6 08:46
楼主牛人啊
不过问题是 3玄恐怕比5玄更难找啊 我就是这种情况 5玄无数 3玄却很少 又不能降级
作者: 添酒忆明眸    时间: 2010-5-6 08:47
所以我种树的时候 尽量用5玄
作者: 帛裂七弦    时间: 2010-5-6 09:04
有没有考虑。×2 和+2、-2的付出价值是不一样的。
一次翻倍所付出的资金是加二、减二的5倍。
126区猪能能 发表于 2010-5-6 08:28


恩,都考虑了
初始值、目标值、3种操作的价值量
这些都是自己输入的。

试下就知道了
作者: 帛裂七弦    时间: 2010-5-6 09:16
楼主牛人啊
不过问题是 3玄恐怕比5玄更难找啊 我就是这种情况 5玄无数 3玄却很少 又不能降级
添酒忆明眸 发表于 2010-5-6 08:46


根据你这种需求,你可以适量设低*2的价值量,增加+2,-2操作的价值量。这样就可以满足你的目的。
作者: 寻&觅    时间: 2010-5-6 09:16
楼主,win7用不了~希望帮忙解决下,用这个好啊,比用计数器方便~~~

详细错误信息如下:
"应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,并使用命令行sxstrace.exe工具。"
作者: 帛裂七弦    时间: 2010-5-6 10:48
更新了,运行不了的同学可以再试下,看还成不成~~
作者: 小野猫喵喵    时间: 2010-5-6 10:50
我能问问怎么用啊 我电脑白痴
作者: 126区猪能能    时间: 2010-5-6 10:55
下载了还不错,,
楼主幸苦了[jx02]
作者: 绝版大番茄    时间: 2010-5-6 15:38
[jx06]都是计算机三级的牛B人物
作者: 风雨剑侠梦    时间: 2010-5-6 16:57
一个小问题被搞的那么复杂我擦!!!上过高中的人 不会像你这么累!我们都是老师教的~你们是靠摸索的哈哈!一看楼主没上过高中
作者: 118-情有独钟    时间: 2010-5-6 16:57
用不着这么复杂吧
直接种也要不了二十秒就能收获一棵树了
作者: 世界观live    时间: 2010-5-6 17:11
[jx10]不敢用
作者: disable    时间: 2010-5-6 18:02
很牛的C++技术啊,顶个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: disable    时间: 2010-5-6 18:04
代码进入编译器,怎么错误这么多,,,
作者: disable    时间: 2010-5-6 18:05
我用的是VC++编译的,
作者: 帛裂七弦    时间: 2010-5-6 18:06
一个小问题被搞的那么复杂我擦!!!上过高中的人 不会像你这么累!我们都是老师教的~你们是靠摸索的哈哈!一看楼主没上过高中
风雨剑侠梦 发表于 2010-5-6 16:57


无知者无畏

举个例子
从27种到390
+2,-2要10W,*2要20W
您准备花多少钱?

可别偷偷别用俺的计算器哦~
作者: 帛裂七弦    时间: 2010-5-6 18:07
代码进入编译器,怎么错误这么多,,,
disable 发表于 2010-5-6 18:04


呵呵,开始用2005写的,改到vc6要有些改动的
作者: disable    时间: 2010-5-6 18:09
怎么连 主函数 都找不到,你怎么编译成功的,,,
作者: 帛裂七弦    时间: 2010-5-6 18:14
怎么连 主函数 都找不到,你怎么编译成功的,,,
disable 发表于 2010-5-6 18:09


那个代码是VS2005下的,你的编译器要是VC6 要改成这样,其实看下error信息,网上搜下就可以改对了。

#include <vector>
#include <string>
#include <limits>
#include <iostream>
using namespace std;
struct Point
{
int m_nPoint;
int m_nValue;
string m_szoper;

public:
Point(int nPoint, int nValue, string szoper) : m_nPoint(nPoint), m_nValue(nValue), m_szoper(szoper){}
};

int main(int argc, char* argv[])
{
int nStart;  // 起始值
int nEnd;  // 结束值
int nCost_Add; // +2 价值量
int nCost_Del; // -2 价值量
int nCost_Mul; // *2 价值量
cout << "起始值: ";
cin >> nStart;
cout << "目标值: ";
cin >> nEnd;
cout << "+2 价值量: ";
cin >> nCost_Add;
cout << "-2 价值量: ";
cin >> nCost_Del;
cout << "*2 价值量: ";
cin >> nCost_Mul;

// 初始状态
vector<Point> vecOperate;
vecOperate.push_back(Point(nStart, 0, ""));
Point sOptimalSolution(nEnd, numeric_limits<int>::max(), ""); // 最优解
while (true)
{
  if (vecOperate.size() <= 0)
   break;
  
  Point sPoint = vecOperate[0];
  vecOperate.erase(vecOperate.begin());
  if (sPoint.m_nPoint < nStart ||
   sPoint.m_nValue >= sOptimalSolution.m_nValue ||
   sPoint.m_szoper.find("+-") != string::npos ||
   sPoint.m_szoper.find("-+") != string::npos)
   continue;
  
  if (sPoint.m_nPoint == nEnd)
  {
   sOptimalSolution = sPoint;
   continue;
  }
  vecOperate.push_back( Point(sPoint.m_nPoint + 2, sPoint.m_nValue + nCost_Add, sPoint.m_szoper + string("+")) );
  vecOperate.push_back( Point(sPoint.m_nPoint - 2, sPoint.m_nValue + nCost_Del, sPoint.m_szoper + string("-")) );
  vecOperate.push_back( Point(sPoint.m_nPoint * 2, sPoint.m_nValue + nCost_Mul, sPoint.m_szoper + string("*")) );
}
cout << "最优消耗:" << sOptimalSolution.m_nValue << endl;
cout << "最优算法:" << sOptimalSolution.m_szoper << endl;
getchar();
getchar();
printf("Hello World!\n");
return 0;
}
作者: disable    时间: 2010-5-6 18:16
用C的编译器写的吧,一看结构体就知道了
我用的是VC++,你告诉我下作哪些修改
连主函数都找不到,怎么编译成功嘛~~~~~~~~~~~~~~
作者: disable    时间: 2010-5-6 18:18
这个头文件找不到,就差它一个错误。。。

22222.jpg (5.61 KB, 下载次数: 423)

22222.jpg

作者: 帛裂七弦    时间: 2010-5-6 18:20
没有.h
#include <vector>
作者: disable    时间: 2010-5-6 18:22
没有.h
#include
帛裂七弦 发表于 2010-5-6 18:20
没有它直接编译不成功
作者: disable    时间: 2010-5-6 18:23
没有.h
#include
帛裂七弦 发表于 2010-5-6 18:20
你看,直接不行

33333.jpg (90.7 KB, 下载次数: 333)

33333.jpg

作者: disable    时间: 2010-5-6 18:24
vector 这是个啥头文件,怎么VC里面没有
作者: 帛裂七弦    时间: 2010-5-6 18:35
给你远程把,你QQ几多 [jx09]
作者: disable    时间: 2010-5-6 18:41
给你远程把,你QQ几多 [jx09]
帛裂七弦 发表于 2010-5-6 18:35
你告诉我怎么改就行了,你的主课程是C语言吧,我C语言大专学的,不怎么好,本科阶段直接学C++呢,不好过度啊,一看结构体POINT就想到课本上的例子就用POINT结构体讲呢,哈哈,现在习惯用类了,结构体的印象都忘没了快。。。
作者: disable    时间: 2010-5-6 18:43
这个算法我想用C++里的递归是不是好实现些。。。
作者: 帛裂七弦    时间: 2010-5-6 18:44
Q聊吧,已经刷版了,斑竹会不高兴了
作者: disable    时间: 2010-5-6 18:45
#include <vector>
#include <string.h>
#include <limits.h>
using namespace std;

有命名空间冲突吗?加了名字空间后,还提示25个错误,
作者: disable    时间: 2010-5-6 18:48
呵呵,版主不高兴了,他是嫉妒你的才识比他高吧,呵呵
好 298255005
作者: disable    时间: 2010-5-6 18:50
平时看到吹牛的人一大群,真正能看到这样自己动手实现的人很少,虽然功能简单,界面不算美观,但是功能已经可以了,支持你,顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: 帛裂七弦    时间: 2010-5-6 19:55
呵呵,版主不高兴了,他是嫉妒你的才识比他高吧,呵呵
好 298255005
disable 发表于 2010-5-6 18:48


呵呵,谢谢夸奖,俺都不好意思了。[jx01]

不过也不能这样说,正所谓“闻道有先后,术业有专攻”,斑竹不干俺们这行自然不会这些东西,但是斑竹也有很多本领是俺们不会的。
作者: 我爱筷子    时间: 2010-5-6 19:57
高科技产品哦  还好本人一天就只种4棵树  脑壳一转一哈就OK了
作者: 真镜影ぁ埃    时间: 2010-5-6 20:45
[jx02]楼主说的好啊 我顶啊
作者: 西门吹雪现在版    时间: 2010-5-6 22:38
本帖最后由 西门吹雪现在版 于 2010-5-6 22:43 编辑

我用 EXCEL做了个更简单的如下:

原始积分22浇水除虫肥料
目标积分266=
101266
001132
10166
00132
03016

引用一下楼主的数据,结果如下:
原始积分34浇水除虫肥料
目标积分500=
001500
101250
001124
10162
02030

使用的东西一样多,OK了·!
作者: disable    时间: 2010-5-6 22:57
楼上这个更具挑战力啊,都不错挺好的,都能把所学的应用到实处,等待下个有没有人用汇编语言搞一个,就用国内最流行的MCS-51来做系统,用个普通1602显示输出结果,,,等待中。。。
作者: 柳笑生    时间: 2010-5-6 23:06
哥我是直接用计算器按的。

怕你们不会, 给你们举个例:

原始值6   目标值256

接下来, 第一步, 拿出我们无与伦比的牛X计算器(真正划时代的高科技产品哈[jx06])

首先, 选中计算器上的 “ON/C-CE”键。  这是开关键。 至关重要,必须要按。

然后  分别按中 2 5 6 三个数字

接着  按   /   键   

紧接着  按 2 键

最后按 = 号键。  这步同样重要。

依此, /2 /2/2    直至得出接近原始值6  的为  8  

OK。

用秒表掐了掐。

打字打了我3分钟20秒左右, 教你们这群高才生的。

按计算器用时 10秒左右。


谁更牛[jx14]
作者: disable    时间: 2010-5-7 00:19
哈哈哈哈,我恐怕被雷到了,是真的雷到了,,,,,,
作者: 帛裂七弦    时间: 2010-5-7 09:33
早上起来,看到2位的意见,只能说太幼稚了。。。。
用你们的算法可以满足某些情况,但是无法满足全部的情况,说白点就是“瞎猫碰到死老鼠”

还是俺提过的例子:
初始值 27 目标值 390
加减法要10W, 乘法要20W,您准备花多少钱?您怎么用您的方法算出来?

请“正面”面对这个问题,不要举例外的特例。
作者: 帛裂七弦    时间: 2010-5-7 09:44
当然您钱多,不在乎,那俺没话说。。。。
钱多的是大爷嘛~
作者: 帛裂七弦    时间: 2010-5-7 09:54
如果您认为我举的例子是特例的话,那没问题
我还可以算出所有可能的情况中,用您的方法不能获得最优解的情况也多少种
也就是说,俺可以算出 用您的方法造成多花钱的可能性有百分之多少
您想知道么?
作者: 帛裂七弦    时间: 2010-5-7 09:59
更进一步,用上 概率论与数理统计 的知识,俺还可以算出用您的方法一个月下来会多花多少钱。
作者: 谁啊我啊    时间: 2010-5-7 10:02
算好一个后 再算下一个要怎么样  再重新关闭程序再开程序吗?
作者: 118-情有独钟    时间: 2010-5-7 10:20
种个树
直接口算就是了
要得着这么麻烦么·····
口算是最快的
不超过20秒绝对搞定
作者: disable    时间: 2010-5-7 10:44
种个树
直接口算就是了
要得着这么麻烦么·····
口算是最快的
不超过20秒绝对搞定
118-情有独钟 发表于 2010-5-7 10:20
你说的简单,楼主是用计算机编程自己实现科学预算,是一种定量的数学模型计算的,涉及到相关的专业知识,因为我的专业是计算机信息管理,相关学科和楼主的专业有点相似,所以我能理解,没有你说的那么简单。不懂的人就不要乱说,首先你能看懂人家的C源代码再讨论。这比你直接花钱买精灵要实际很多,这虽然是个简单的小功能编程,但它可以渗透出通过计算机软件系统来实现精确科学计算的一个过程,是经济发展和技术进步与推广的一个代表典范,计算机科学亦是如此。根据IRM的信息化三要素理论来说:技术的进步要和组织的变革还有人的素质的提高相辅相成,技术的超越要于管理的超前还有个人能力的提高成正比,否则就会产生滞后反应,我们国家的现状亦是如此,我们只能通过学习提高自己的能力,不能光坐在电脑面前动动鼠标按按键盘,永远都停留在OSI的七层结构的应用层,多往深处看看想想,你会发现很多有趣的东西的。
作者: 118-情有独钟    时间: 2010-5-7 11:02
你说的简单,楼主是用计算机编程自己实现科学预算,是一种定量的数学模型计算的,涉及到相关的专业知识,因为我的专业是计算机信息管理,相关学科和楼主的专业有点相似,所以我能理解,没有你说的那么简单。不懂的人 ...
disable 发表于 2010-5-7 10:44

我不懂那些程序
但是光种树的话
口算操作所需要的时间
绝对不会比你用程序所用的时间要长(这还不算你写程序的时间)
拜托
并不是什么事情都是高科技的管用
作者: 没JL不游戏    时间: 2010-5-7 11:03
你说的简单,楼主是用计算机编程自己实现科学预算,是一种定量的数学模型计算的,涉及到相关的专业知识,因为我的专业是计算机信息管理,相关学科和楼主的专业有点相似,所以我能理解,没有你说的那么简单。不懂的人 ...
disable 发表于 2010-5-7 10:44
楼主的几句话虽然简单,却概括扼要,一语道出了我们苦想多年的而不可得答案的几个重大问题的根本。楼主就好比论坛的明灯,楼主就好比论坛的方向,楼主就好比论坛的栋梁。有楼主在,论坛的明天必将更好!大师的话真如“大音希声扫阴翳”,犹如”拨开云雾见青天”,使我等网民看到了希望,看到了未来!晴天霹雳,醍醐灌顶或许不足以形容大师文章的万一;巫山行云,长江流水更难以比拟大师的文才!黄钟大吕,振聋发聩!你烛照天下,明见万里;雨露苍生,泽被万方!透过你深邃的文字,我仿佛看到了你鹰视狼顾,龙行虎步的伟岸英姿;仿佛看到了你手执如椽大笔,写天下文章的智慧神态;仿佛看见了你按剑四顾,江山无数的英武气概将这帖逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横网络bbs多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。楼主,是你让我深深地理解了‘人外有人,天外有天’这句话。谢谢侬!在看完这帖子以后,我没有立即回复,因为我生怕我庸俗不堪的回复会玷污了这网上少有的帖子。但是我还是回复了,因为觉得如果不能在如此精彩的帖子后面留下自己的网名,那我死也不会瞑目的!能够在如此精彩的帖子后面留下自己的网名是多么骄傲的一件事啊!楼主,请原谅我的自私!我知道无论用多么华丽的辞藻来形容楼主您帖子的精彩程度都是不够的,都是虚伪的,所以我只想说一句:您的帖子太好看了!我愿意一辈子的看下去!

[jx24] 我用这个来回敬你
作者: 帛裂七弦    时间: 2010-5-7 11:14
我不懂那些程序
但是光种树的话
口算操作所需要的时间
绝对不会比你用程序所用的时间要长(这还不算你写程序的时间)
拜托
并不是什么事情都是高科技的管用 ...
118-情有独钟 发表于 2010-5-7 11:02


口算要个20秒吧,用程序2秒,俺帮你节约时间了
口算要废脑子吧,用程序不用动脑,俺帮你节约精神了
口算得到的结果“有可能”不是最好的,俺帮你节约金钱了

俺既然帮您节约了时间、精神、金钱
您还有什么不满意的呢?
作者: 刀锋——狂野湘军    时间: 2010-5-7 11:19
嗨,这个,也太牛叉了吧

俺们用心算,种一棵树大概也要不了2,30秒钟的,

很简单的加减乘除问题,只要熟悉其中的规律,很快的

你这程序,让我想起了一句话

就是现在的年轻人,用管了电脑

叫他拿笔写字,简直是受罪

写的人难受,

看的人更难受,

字迹比鸡爪画出来的好不了多少。
作者: 刀锋——狂野湘军    时间: 2010-5-7 11:21
可怜我伟大的中华书法传统!阿门!
作者: 刀锋——狂野湘军    时间: 2010-5-7 11:22
不赞同lz搞这种东西,

太纵容和培养惰性了

难道你去买个小菜,也要拿个程序器去吗?
作者: 帛裂七弦    时间: 2010-5-7 11:26
嗨,这个,也太牛叉了吧

俺们用心算,种一棵树大概也要不了2,30秒钟的,

很简单的加减乘除问题,只要熟悉其中的规律,很快的

你这程序,让我想起了一句话

就是现在的年轻人,用管了电脑

叫他拿笔写字,简直是 ...
刀锋——狂野湘军 发表于 2010-5-7 11:19


前辈说的有道理,现在的人确实是越来越依靠电脑了,这不是个好现象。
但是前辈却忽略掉了,就这个问题而言,
在某些情况下,靠心算可以得到最好的种法,
但是在另外一些情况下,心算得到的不是最好的
从整体上来看,这个问题如果要在所有情况下都得到最好的种法,靠数学是无解的。
作者: 世界观live    时间: 2010-5-7 11:30
不敢用 怕中马 不要和我说有马死全家或盗号等于作贼之类的话! 不知道邂逅为什么帮你申精 .
作者: 118-情有独钟    时间: 2010-5-7 11:39
口算要个20秒吧,用程序2秒,俺帮你节约时间了
口算要废脑子吧,用程序不用动脑,俺帮你节约精神了
口算得到的结果“有可能”不是最好的,俺帮你节约金钱了

俺既然帮您节约了时间、精神、金钱
您还有什么不满意的 ...
帛裂七弦 发表于 2010-5-7 11:14

从开始种第一棵树到第4棵树收获
心算就1分钟左右的事

你说程序2秒
难道你不算操作的时间吗?
你自己算下你用程序第一棵树开始种
到4棵树完成要多少秒?

说实话
心算可能在某一棵树上多用些水桶
但是大部分情况下也是最优化的
作者: 昆少2-1    时间: 2010-5-7 12:09
59# 帛裂七弦

其他用心算就可以出结果的朋友,不错,你们是强人,不过并不是每个玩家都能像你们这么强.最多你们自己用更好的途径好了.
楼主做的很好,方便了不少用户.
作者: disable    时间: 2010-5-7 13:15
我理解很多人的想法和看法,就如我父亲当时很不愿意给我买电脑,毕竟他们是老时代的人物了,我父亲的毛笔字写的很好,平时没事时他很喜欢自己写点字,但如今有了高科技,他们是落伍了,接收不了那些高科技了。也如网上以前的一句话:写的一手好字被电脑给废了。我能理解那种心情。但是我们还得向前看,要发展么,今天的你就比昨天的你进步很多,哪怕微小的进步也是进步。楼主朋友用自己的专业知识来帮助大家完成实际中遇到的问题,并且把源代码给了大家,我个人认为应该尊重下人家的劳动成果,别太偏激了。我也是计算机专业的,我更理解楼主朋友的心情和获得成功时的喜悦,希望大家给点认同,这种帖子真的平时大家很少见的,在此也鼓励大家除了游戏之外其实我们能追求的东西还有很多,游戏也只是一种消遣的工具,游戏也是个程序,也是由像楼主发的这样的源代码一行一行的组成的,只是程度的多少罢了。谢谢大家,在此顶下楼主朋友。希望大家给点支持。。。
作者: 118-情有独钟    时间: 2010-5-7 14:10
顶起······
LZ辛苦了
作者: Ω遠非完美Ю    时间: 2010-5-7 16:08
好多淫才啊
作者: 妖精的情人    时间: 2010-5-7 18:17
本帖最后由 妖精的情人 于 2010-5-7 19:32 编辑

楼主的算法瞒先进滴,可用起来比较费时间吧 。
俺有一个方法,可以不用你们按计算器。
#include <iostream.h>
#include <vector>
void main()
{
float n,z;
cout<<"输入一个整数:";
cin>>n;
for(int i=1;i<n;i*=2)
{
  z=n/i;
  cout<<n<<"=\t"<<z<<'\t'<<"*"<<'\t'<<i<<endl;
}
cout<<'\n'<<"请按回车键!"<<endl;
getchar();
}
可以在生成的Debug文件包里面有个.exe,打开它就能运行了,我已经设定为手动关闭。
以上方法当然没有楼主的省钱,俺试过初始15,目标值396,楼主用260W  最优算法+++++***-*
俺的直接点-*-**+***   花费330W。不过省时间,哈哈
作者: disable    时间: 2010-5-7 18:36
楼主的算法瞒先进滴,可用起来比较费时间吧 。
俺有一个方法,可以不用你们按计算器。
#include
void main()
{
float n,z;
coutn;
for(int i=1;i
妖精的情人 发表于 2010-5-7 18:17
这个循环只能说明一个任意随机数除开2以后的每次结果数,从计算显示结果中人为判断每次的加权值的次数,似乎不如楼主的设计巧妙,楼主的代码中还加入了操作过程输出语句。我想用递归算法,但想了几次都没实现,有兴趣可以讨论下。。。
作者: disable    时间: 2010-5-7 18:38
这个循环只能说明一个任意随机数除开2以后的每次结果数,从计算显示结果中人为判断每次的加权值的次数,似乎不如楼主的设计巧妙,楼主的代码中还加入了操作过程输出语句。我想用递归算法,但想了几次都没实现,有兴 ...
disable 发表于 2010-5-7 18:36
效果不好,如果能加入过程输出语句效果会更好些。

2243.jpg (22.75 KB, 下载次数: 257)

2243.jpg

作者: 妖精的情人    时间: 2010-5-7 18:46
本帖最后由 妖精的情人 于 2010-5-7 22:00 编辑

我只是想让按计算器的玩家更快的完成,当然前提是不计花费。
现在正在想怎么用别的方法也省钱。
作者: 我爱乖乖    时间: 2010-5-7 23:14
[jx02]看到的最多技术的一个贴子,顶下
作者: disable    时间: 2010-5-8 00:34
我只是想让按计算器的玩家更快的完成,当然前提是不计花费。
现在正在想怎么用别的方法也省钱。
妖精的情人 发表于 2010-5-7 18:46
呵呵,如果程序功能只是如此的话,那够大家所用了,我和你一样也在想一种更加快捷的全面的解决方案,不过楼主的代码已经做的很完美的,值得学习的教材。。。再次顶下楼主。。。
作者: 妖精的情人    时间: 2010-5-8 08:01
刚刚在用楼主的EXE种树,缺点就是算法时间太长了,不过倒是省钱,顶下楼主。
作者: 沐紫草钰    时间: 2010-5-8 11:01
楼主说的好啊 我顶啊
ZCOM电信欢迎你的到来
作者: 真镜影ぁ埃    时间: 2010-5-8 11:03
楼主说的好啊 我顶啊[jx02]
作者: 添酒忆明眸    时间: 2010-5-8 12:34
玩剑侠的牛人不少啊
我现在种树 以5玄为主 3玄为辅 因为3玄太少
就是把目标值不停的除以2 不能整除的 就加1或减1 直到和随机数接近
作者: 武师    时间: 2010-5-8 13:26
楼主确实高明
源代码的要西  我学习下
mingcuiliu@163.com
作者: 126区猪能能    时间: 2010-5-8 13:34
1:1:5 我输入的介值
作者: 妖精的情人    时间: 2010-5-8 17:51
楼主的程序如下:
#include <vector>
#include <string>
#include <limits>
#include <iostream>
using namespace std;
struct Point
{
int m_nPoint;
int m_nValue;
string m_szoper;
public:
Point(int nPoint, int nValue, string szoper) : m_nPoint(nPoint), m_nValue(nValue), m_szoper(szoper){}
};
int main(int argc, char* argv[])
{
int nEnd;  // 结束值
int nStart;  // 起始值
int nCost_Add=6; // +2 价值量      可在=6那输入你+2的价值
int nCost_Del=6; // -2 价值量        可在=6那输入你-2的价值
int nCost_Mul=10; // *2 价值量     可在=10那输入你*2的价值   输入这三个之后就不用再输入三次价值量了
cout << "输入目标值: ";
cin >> nEnd;
cout << "输入起始值: ";
cin >> nStart;
//cout << "+2 价值量: ";
//cin >> nCost_Add;
//cout << "-2 价值量: ";
//cin >> nCost_Del;
//cout << "*2 价值量: ";
//cin >> nCost_Mul;
// 初始状态
vector<Point> vecOperate;
vecOperate.push_back(Point(nStart, 0, ""));
Point sOptimalSolution(nEnd, numeric_limits<int>::max(), ""); // 最优解
while (true)
{
  if (vecOperate.size() <= 0)
   break;
  
  Point sPoint = vecOperate[0];
  vecOperate.erase(vecOperate.begin());
  if (sPoint.m_nPoint < nStart ||
   sPoint.m_nValue >= sOptimalSolution.m_nValue ||
   sPoint.m_szoper.find("+-") != string::npos ||
   sPoint.m_szoper.find("-+") != string::npos)
   continue;
  
  if (sPoint.m_nPoint == nEnd)
  {
   sOptimalSolution = sPoint;
   continue;
  }
  vecOperate.push_back( Point(sPoint.m_nPoint + 2, sPoint.m_nValue + nCost_Add, sPoint.m_szoper + string("+")) );
  vecOperate.push_back( Point(sPoint.m_nPoint - 2, sPoint.m_nValue + nCost_Del, sPoint.m_szoper + string("-")) );
  vecOperate.push_back( Point(sPoint.m_nPoint * 2, sPoint.m_nValue + nCost_Mul, sPoint.m_szoper + string("*")) );
}
cout << "最优消耗:" << sOptimalSolution.m_nValue << endl;
cout << "最优算法:" << sOptimalSolution.m_szoper << endl;
getchar();
getchar();
printf("Hello World!\n");
return 0;
}


//在int nCost_Add 设定初始值,如上面的程序
//可在=6那输入你+2的价值
//可在=6那输入你-2的价值
//可在=10那输入你*2的价值   
//输入这三个之后就不用再输入三次价值量了,可省一定的时间。
作者: 帛裂七弦    时间: 2010-5-8 18:02
俺的这个程序目前效率上还有很大问题,感兴趣的同学可以在这里参与讨论,看应该怎么做好。
http://topic.csdn.net/u/20100507 ... b05e99b5.html?62102
作者: disable    时间: 2010-5-8 19:57
楼主的程序如下:
#include
#include  
#include
#include
using namespace std;
struct Point
{
int m_nPoint;
int m_nValue;
string m_szoper;
public:
Point(int nPoint, int nValue, string szoper) : m_nP ...
妖精的情人 发表于 2010-5-8 17:51
这段代码调试成功了,楼主上次发的那段连主函数都找不到,让我看了个糊涂,这个清晰明了,不过还是有点不习惯结构体,习惯用类表示了,呵呵。计算效率不算太低,这种算法要求比较苛刻,需要参与过程和子过程,效率下降点也是很正常,个人观点,呵呵。楼主辛苦了。。。
作者: 好名都注册了    时间: 2010-5-8 20:30
有没有考虑。×2 和+2、-2的付出价值是不一样的。
一次翻倍所付出的资金是加二、减二的5倍。
126区猪能能 发表于 2010-5-6 08:28



这位头像很牛X,呵呵。。
作者: disable    时间: 2010-5-8 23:20
楼主的程序如下:
#include
#include  
#include
#include
using namespace std;
struct Point
{
int m_nPoint;
int m_nValue;
string m_szoper;
public:
Point(int nPoint, int nValue, string szoper) : m_nP ...
妖精的情人 发表于 2010-5-8 17:51
还有个建议,往主函数开头处加个死循环,这样可以照顾很多玩家一次性做完4棵树,直接编译出可执行程序,发给大家,这样很多人就可以享受到楼主的成果了。

帛裂七弦-植树计算程序(改良版).rar

94.53 KB, 下载次数: 1031


作者: disable    时间: 2010-5-8 23:23
以上下载是根据大众需求加入楼主的代码,形成一个循环,可以方便大家连续使用,绝不含病毒,如有病毒,请大家举报,谢谢,再次再感谢下楼主,没有楼主的精心设计,就没有大家的轻松和方便。
支持楼主。
版权所有。。。。
作者: 天下第一笨    时间: 2010-5-9 11:19
我用笔算,每天做10多个号大概就1小时

用笔算 除2 的过程可以更准确的用+ —
作者: 妖精的情人    时间: 2010-5-9 11:21
以上下载是根据大众需求加入楼主的代码,形成一个循环,可以方便大家连续使用,绝不含病毒,如有病毒,请大家举报,谢谢,再次再感谢下楼主,没有楼主的精心设计,就没有大家的轻松和方便。
支持楼主。
版权所有。。 ...
disable 发表于 2010-5-8 23:23

能把你加入的程序复上来吗?我直接加进去就可以了。
作者: 妖精的情人    时间: 2010-5-9 11:23
我用笔算,每天做10多个号大概就1小时

用笔算 除2 的过程可以更准确的用+ —
天下第一笨 发表于 2010-5-9 11:19

你用笔算还不如用我那个除法呢。

除法.rar

43.29 KB, 下载次数: 877


作者: 妖精的情人    时间: 2010-5-10 20:33
帮楼主顶上来!
作者: disable    时间: 2010-5-10 23:27
能把你加入的程序复上来吗?我直接加进去就可以了。
妖精的情人 发表于 2010-5-9 11:21
呵呵,我只是加了个死循环在里面,这样就不必因为种4个甚至更多的树来回开程序了,这比起楼主的来说是微不足道的,呵呵,再次给楼主顶下,楼主才是版权所有者。前几天看到有个人用JAVA的递归算法编写的,似乎效率高点,有兴趣的可以去看看,因为我的课程是C++,我不懂JAVA,不敢参与其意见,呵呵。




欢迎光临 剑侠情缘网络版 (https://jx.bbs.xoyo.com/) Powered by Discuz! X3.1