学以致用--游戏:孢子(Spore) 中 殖民地 最佳布局

news/2024/12/29 18:55:19/

具体布局图如上:1-11个可选建筑位置(编号1-11)+中间1个固定建筑(未编号)。共计18条连续产生效果(a[0]-a[11],然后多次尝试之后,写出如下代码。

#include <iostream>
using namespace std;
int f = 1, y = 2, g = 3;
string jianzhuming[] = { "房子","娱乐","工厂" };
struct Zonghe
{int renkou;int chanchu;int yule;Zonghe(int renkou = 0, int chanchu = 0, int yule = 0) :renkou(renkou), chanchu(chanchu), yule(yule) {};
};
Zonghe operator +(const Zonghe& a, const Zonghe& b)
{return Zonghe(a.renkou + b.renkou, a.chanchu + b.chanchu, a.yule + b.yule);
}Zonghe jisuan(Zonghe z, int a, int b)
{if (a == b){if (a == f){z.chanchu = 0;z.yule = 0;z.renkou = 0;}else{if (a == y){z.chanchu = 0;z.yule = 0;z.renkou = 0;}else{z.chanchu = 0;z.yule = 0;z.renkou = 0;}}}else{if ((a == f && b == y) || (a == y && b == f)){z.chanchu = 0;z.yule = 1;z.renkou = 0;}if ((a == f && b == g) || (a == g && b == f)){z.chanchu = 12;z.yule = 0;z.renkou = 0;}if ((a == y && b == g) || (a == g && b == y)){z.chanchu = 0;z.yule = -1;z.renkou = 0;}}return z;
}int max(int a, int  b)
{return a > b ? a : b;
}
int q[] = { 1,1,1,1,1,1,1,1,1,1,1,1 };
Zonghe bia(Zonghe a, Zonghe b,int sss[])
{if (a.chanchu == b.chanchu){if (a.yule > b.yule){return a;}else{for (int i = 0; i < 11; i++){q[i] = sss[i];}return b;}}if (a.chanchu > b.chanchu){return a;}else{for (int i = 0; i < 11; i++){q[i] = sss[i];}return b;}}Zonghe qiuhe(Zonghe t, int p[])
{Zonghe k = Zonghe(0, 0, 0);Zonghe a[18] = { k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k,k };a[0]=	jisuan(a[0], p[0], p[1]);
a[1] = jisuan(a[1], p[1], p[2]);
a[2] = jisuan(a[2], p[2], p[5]);
a[3] = jisuan(a[3], p[1], p[9]);
a[4] = jisuan(a[4], f, p[1]);
a[5] = jisuan(a[5], f, p[3]);
a[6] = jisuan(a[6], p[3], p[4]);
a[7] = jisuan(a[7], p[4], p[5]);
a[8] = jisuan(a[8], p[4], p[6]);
a[9] = jisuan(a[9], p[5], p[6]);
a[10] = jisuan(a[10], f, p[5]);
a[11] = jisuan(a[11], f, p[10]);
a[12] = jisuan(a[12], f, p[9]);
a[13] = jisuan(a[13], p[8], p[9]);
a[14] = jisuan(a[14], p[10], p[8]);
a[15] = jisuan(a[15], p[7], p[10]);
a[16] = jisuan(a[16], p[6], p[7]);
a[17] = jisuan(a[17], p[7], p[8]);for (int i=0; i < 18; i++){t = t + a[i];}/*if (t.chanchu > 0){cout << "产出:" << t.chanchu << "娱乐:" << t.yule << "人口:" << t.renkou << endl;getchar();}*/return t;
}int main()
{int diyige = 0;Zonghe k = Zonghe(0, 0, 0);Zonghe zui = Zonghe(0, 0, 0);Zonghe kz= Zonghe(0, 0, 0);int p[] = {1,1,1,1,1,1,1,1,1,1,1,1};for (p[0] = 1;  p[0] <4;  p[0]++){for (p[1] = 1; p[1] <4; p[1]++){for (p[2] = 1; p[2] < 4; p[2]++){for (p[3] = 1; p[3] < 4; p[3]++){for (p[4] = 1; p[4] < 4; p[4]++){for (p[5] = 1; p[5] < 4; p[5]++){for (p[6] = 1; p[6] < 4; p[6]++){for (p[7] = 1; p[7] < 4; p[7]++){for (p[8] = 1; p[8] < 4; p[8]++){for (p[9] = 1; p[9] < 4; p[9]++){for (p[10] = 1; p[10] < 4; p[10]++){k = Zonghe(0, 0, 0);k=qiuhe(k, p);Zonghe guding = Zonghe(0, 0, 0);for (int i = 0; i < 11; i++){if (p[i] == y){guding.yule = guding.yule + 1;}if (p[i] == f){guding.renkou = guding.renkou + 10;}if (p[i] == g){guding.yule = guding.yule - 1;}}kz = k + guding;if (kz.yule >= 0){if (diyige == 0){zui = kz;diyige = 1;}else{zui = bia(zui,kz,p);}}}}}}}}}}}}}cout << "产出:" << zui.chanchu << "娱乐:" << zui.yule << "人口:" << zui.renkou << endl;for (int i = 0; i < 11; i++){cout <<"位置"<<i+1<<"   :  "<<jianzhuming[q[i]-1]<<" " << endl;}return 0;
}

运行结果如下图:


http://www.ppmy.cn/news/357772.html

相关文章

MPB:北林张静等-丛枝菌根真菌(AMF)孢子、菌丝密度及侵染率定量测定方法

为进一步提高《微生物组实验手册》稿件质量&#xff0c;本项目新增大众评审环节。文章在通过同行评审后&#xff0c;采用公众号推送方式分享全文&#xff0c;任何人均可在线提交修改意见。公众号格式显示略有问题&#xff0c;建议电脑端点击文末阅读原文下载PDF审稿。在线文档(…

java孢子进化_孢子的进化起源

孢子的进化起源是一款相当优秀的生存模拟游戏。在这款游戏中玩家们将会享受属于自己的孢子进化。你最开始只是这个世界上最简单和弱小的存在&#xff0c;但是你可以通过寄生和吞噬等手段&#xff0c;让自己不断进化&#xff0c;拥有更多独特的能力&#xff0c;最终成为唯一的霸…

孢子

孢子 http://detail.zol.com.cn/lcd/index351988.shtml

小孢子的神奇之旅-如何阅读MindSpore报错信息(2)

小孢子的神奇之旅-如何阅读MindSpore报错信息(2) 先回忆下自修孢问题解决的三步巅峰论&#xff0c;“1&#xff09;理解问题原因 2&#xff09;找到问题出在哪里 3&#xff09;改了”&#xff0c;我们在上篇文章应用三步论解决了MindSpore Primitive算子执行的一个小问题&#…

springboot的数据访问和数据视图

当使用 Spring Boot 进行数据访问时&#xff0c;我们可以选择使用 MyBatis 或 JPA&#xff08;Java Persistence API&#xff09;来实现增删改查操作。下面我将分别给出使用这两种方式整合数据访问的详细步骤和示例&#xff0c;同时结合 Thymeleaf 实现数据展现。 方式一: 使用…

剑指offer57.和为s的两个数字

双指针i从左往右&#xff0c;j从右往左&#xff0c;如果大于目标值&#xff0c;j往左走否则i往右走&#xff0c;直到等于目标值 class Solution {public int[] twoSum(int[] nums, int target) {int[] res new int[2];int i 0; int j nums.length-1;int sum nums[i] nums…

UG\NX二次开发 常用的网站(持续更新中)

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 小白鼠: http://www.vmould.cn 威模论坛:论坛 - Powered by Discuz! 蚂蚁论坛 蚂蚁Emmet——制造业IT宅男 胡君论坛:https://www.ugapi.com 西门子二次开发论坛 Siemens DISW UG爱好者 UG

鸿蒙810 980,首发鸿蒙OS华为新机浮出水面:“浴霸”四摄+麒麟810处理器

首发鸿蒙OS华为新机浮出水面&#xff1a;“浴霸”四摄麒麟810处理器 2019年08月09日 11:03作者&#xff1a;项森编辑&#xff1a;项森文章出处&#xff1a;泡泡网原创 分享 8月9日消息&#xff0c;据外媒PhoneArena报道&#xff0c;华为Mate 30系列其中一个机型将搭载鸿蒙操作系…