uva10001 - Garden of Eden

2023-11-20 19:49
文章标签 garden eden uva10001

本文主要是介绍uva10001 - Garden of Eden,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意不好理解,参考了人家的代码才看懂的题意,

就是用某种编译方式,检测所给字符串是否合理,即求它的原串。两者长度一样,只不过新得的串是根据所给编译方式和左邻右舍的值来求得的。

对于编译方式 rule:0

其意思为:

0 0 0 -->0

0 0 1 -->0

0 1 0 -->0

0 1 1 -->0

......

通俗来讲就是对于编译方式k,先把k转化为八位二进制串,8 -->0 0 0 0 1 0 0 0.。 用八位二进制串中的每个字符分别对应{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}

跟详细的解释请见于:http://mathworld.wolfram.com/ElementaryCellularAutomaton.html

代码如下:

#include <cstdio>
int ok, nosolve[35], gain[35], state[8], array[8][3] = {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}};
void to_binary(int k)
{for(int i = 0; i < 8; i++) {state[i] = k%2; k/=2;}
}
void dfs(int n, int cur)
{if(ok) return;if(cur==n){if(gain[n]==gain[0]&&gain[n+1]==gain[1]) ok = 1;return;}for(int i = 0; i < 8; i++){if(nosolve[cur]==state[i]&&(!cur||(gain[cur]==array[i][0]&&gain[cur+1]==array[i][1]))){if(!cur) {gain[0] = array[i][0]; gain[1] = array[i][1];}gain[cur+2] = array[i][2];dfs(n, cur+1);}}
}
int main ()
{int k, n;char s[35];while(scanf("%d%d%s",&k,&n,s)==3){for(int i = 0; i < n; i++) nosolve[i] = s[i]-'0';to_binary(k);ok = 0;dfs(n, 0);if(ok)puts("REACHABLE");else puts("GARDEN OF EDEN");}return 0;
}


再贴一下,优化之后的代码。跑了132ms。

#include <cstdio>
int ok, nosolve[35], gain[35], state[8], array[8][3] = {{0,0,0},{0,0,1},{0,1,0},{0,1,1},{1,0,0},{1,0,1},{1,1,0},{1,1,1}};
void to_binary(int k)
{for(int i = 0; i < 8; i++) {state[i] = k%2; k/=2;}
}
void dfs(int n, int cur)
{if(ok) return;if(cur==n){if(gain[n]==gain[0]&&gain[n+1]==gain[1]) ok = 1;return;}if(!cur) {for(int i = 0; i < 8; i++) if(nosolve[0]==state[i]){ gain[0] = array[i][0]; gain[1] = array[i][1]; gain[2] = array[i][2]; dfs(n,cur+1); }}else{int t = gain[cur]*4+gain[cur+1]*2;if(state[t]==nosolve[cur])  {gain[cur+2] = 0; dfs(n, cur+1); }if(state[t+1]==nosolve[cur])  {gain[cur+2] = 1; dfs(n,cur+1); }}
}
int main ()
{int k, n;char s[35];while(scanf("%d%d%s",&k,&n,s)==3){for(int i = 0; i < n; i++) nosolve[i] = s[i]-'0';to_binary(k);ok = 0;dfs(n, 0);if(ok)puts("REACHABLE");else puts("GARDEN OF EDEN");}return 0;
}


这篇关于uva10001 - Garden of Eden的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397014

相关文章

CF 261A. Pashmak and Garden

http://codeforces.com/contest/459/problem/A 简单的题目。 A. Pashmak and Garden Pashmak has fallen in love with an attractive girl called Parmida since one year ago... Today, Pashmak set up a

JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?

原创地址 : http://blog.csdn.net/antony9118/article/details/51425581 在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVA GC机制与性能优化 那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1 为什么要有Survivor区 先不去想为什么有两个Survi

Kivy.garden.NavigationDrawer 后续学习

如百词斩部分代码 MRWord\pages\infopage\info.kv <InfoPage>:anim_type: 'slide_above_simple'id: main_winbox_button_anchor: box_button_anchor.__self__three_labels_box: three_labels_box.__self__box_phonetic: box

06 “eden没有发生minor gc, 对象直接分配在了old gen“ 的调试

前言 呵呵 最近在看这样一篇文章的时候, eden区没有发生minor gc,对象直接分配在了old gen  看到了 R大 的叱咤风云, 讲解的非常细致, 十分令人佩服, 然后 若是想有所收获, 还得 构造一下这个情况, 复现一下, 然后 调试着走一次, 才能 有所收获, 嘿嘿  当然 由于 vm 版本不一样, 因此 下面的测试用例的相关 选项 我这里做了一些 调整    一下代码,

Kivy.garden.NavigationDrawer

totally copied from github opensource code. Just a translation and ideas with idividuals ideas to share its use for all people using chinese. Copyright © 2013 Alexander Taylor 开源免责免费使用声明: #Permiss

uva10001

//这个坑爹的题意,看了一次又一次,不懂,不懂!!!后来就在网上疯狂的搜索细胞自动机(中文百度),结果还是不是很懂,再后来就去找解题报告,发现了一个很好地网址,超赞!!!网址在下面 http://mathworld.wolfram.com/ElementaryCellularAutomaton.html 点击打开链接 看完之后一下子明朗了很多,主要是图起的作用,其实就是一个一维的细胞自

Garden Planner for Mac v3.8.62注册激活版:园林绿化设计软件

Garden Planner for Mac是一款专为苹果Mac OS平台设计的园林景观设计软件。这款软件的主要功能是帮助用户设计梦想中的花园,包括安排植物、树木、建筑物和其他物体。 Garden Planner for Mac提供了一个包含1200多种植物和物体符号的库,这些符号都可以进行定制。用户可以使用易于使用的“拖放”界面来排列这些元素,快速创建出理想的花园设计。此外,软件还包含一系列的

1496 E. Garden of the Sun(构造+思维)

题目:https://codeforc.es/contest/1496/problem/E 题解参考:大佬 题解说明:认真读题,最开始任意两个'X'之间没有共同边和角,所以不存在情况 所以遇到j%3==p&&j+2<=n&&(c[i][j+1]=='X'||c[i][j+2]=='X')时直接令c[i][j+1]==c[i][j+2]==‘X'就到达了连接的目的。 总结:别害怕。cf能

Web Farm和Web Garden的区别?

出处: http://www.cnblogs.com/TranslateOfYi/archive/2011/02/11/1951419.html   【译文】Web Farm和Web Garden的区别?2011-02-11 16:06        by        孙毅,           在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使

Web Farm和Web Garden的区别

在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使用它们的利弊。进一步地,我将介绍如何在各个版本的IIS中创建Web Garden。   英文原文 | Abhijit Jana | 2010年10月2日   概述   ASP.NET开发服务器负责处理所有来自客户端的请求和响应(开发阶段)。完成开发后,为了让他人可以访问你的站点,你必须将站点部署到服务器上,这将涉