㈠ 多米诺骨牌效应是什么意思,最早的起源说法是怎么样的啊
在一个相互联系的系统中,一个很小的初始能量就可能产生一连串的连锁反应,人们就把它们称为“多米诺骨牌效应”或“多米诺效应”。
提出多米诺骨牌效应,还要从宋朝开始说起。
宋宣宗二年(公元1120年),民间出现了一种名叫“骨牌”的游戏。这种骨牌游戏在宋高宗时传入宫中,随后迅速在全国盛行。当时的骨牌多由牙骨制成,所以骨牌又有“牙牌”之称,民间则称之为“牌九”。
1849年8月16日,一位名叫多米诺的意大利传教士把这种骨牌带回了米兰。作为最珍贵的礼物,他把骨牌送给了小女儿。多米诺为了让更多的人玩上骨牌,制作了大量的木制骨牌,并发明了各种的玩法。不久,木制骨牌就迅速地在意大利及整个欧洲传播,骨牌游戏成了欧洲人的一项高雅运动。
后来,人们为了感谢多米诺给他们带来这么好的一项运动,就把这种骨牌游戏命名为“多米诺”。到19世纪,多米诺已经成为世界性的运动。在非奥运项目中,它是知名度最高、参加人数最多、扩展地域最广的体育运动。
最原始的多米诺玩法仅仅是单线,比赛谁推倒得更多、更远。随后多米诺骨牌从单线向平面发展,人们开始利用多米诺骨牌组成一些文字和图案。现在多米诺骨牌进一步向着立体层次发展,并且应用高科技成果,配以声、光、电的效果,使多米诺骨牌动力的传递具有了多种形式,同时,它的艺术性也增强了。
从那以后,“多米诺”成为一种流行用语。在一个相互联系的系统中,一个很小的初始能量就可能产生一连串的连锁反应,人们就把它们称为“多米诺骨牌效应”或“多米诺效应”。
头上掉一根头发,很正常;再掉一根,也不用担心;还掉一根,仍旧不必忧虑……长此以往,一根根头发掉下去,最后秃头出现了。哲学上叫这种现象为“秃头论证”。
往一匹健壮的骏马身上放一根稻草,马毫无反应;再添加一根稻草,马还是丝毫没有感觉;又添加一根……一直往马儿身上添稻草,当最后一根轻飘飘的稻草放到了马身上后,骏马竟不堪重负瘫倒在地。这在社会研究学里,取名为“稻草原理”。
第一根头发的脱落,第一根稻草的出现,都只是无足轻重的变化。但是当这种趋势一旦出现,还只是停留在量变的程度,难以引起人们的重视。只有当它达到某个程度的时候,才会引起外界的注意,但一旦“量变”呈几何级数出现时,灾难性镜头就不可避免地出现了!
㈡ 多米诺骨牌 pascal
[例5] 多米诺骨牌(DOMINO)问题描述:有一种多米诺骨牌是平面的,其正面被分成上下两部分,每一部分的表面或者为空,或者被标上1至6个点。现有一行排列在桌面上:顶行骨牌的点数之和为6+1+1+1=9;底行骨牌点数之和为1+5+3+2=11。顶行和底行的差值是2。这个差值是两行点数之和的差的绝对值。每个多米诺骨牌都可以上下倒置转换,即上部变为下部,下部变为上部。现在的任务是,以最少的翻转次数,使得顶行和底行之间的差值最小。对于上面这个例子,我们只需翻转最后一个骨牌,就可以使得顶行和底行的差值为0,所以例子的答案为1。解决问题:例子的上下部分之差是6+1+1+1-(1+5+3+2)=(6-1)+(1-5)+(1-3)+(1-2)=-2,而翻转最后一个骨牌后,上下之差变为(6-1)+(1-5)+(1-3)+(2-1)=0。由此看出,一个骨牌对翻转策略造成影响的是上下两数之差,骨牌上的数则是次要的了。这么一来,便把骨牌的放置状态由8个数字变为4个: 5 -4 -2 -1,翻转时只需取该位数字的相反数就行了。在本题中,因为各骨牌的翻转顺序没有限定,所以不能按骨牌编号作为阶段来划分。怎么办呢?考虑到隐含阶段类型的问题可以按状态最优值的大小来划分阶段。于是,我们以骨牌序列上下两部分的差值I作为状态,把达到这一状态的翻转步数作为状态值,记为f(I)。便有f(I)=min{f(I+j)+1} (-12〈=j<=12,j为偶数,且要求当前状态有差值为j/2的骨牌)。这里,I不是无限增大或减小,其范围取决于初始骨牌序列的数字差的和的大小。具体动态规划时,如例题,我们以f(-2)=0起步,根据骨牌状态,进行一次翻转,可得到f(-12)=1,f(6)=1,f(2)=1,f(0)=1,由于出现了f(0),因此程序便可以结束,否则将根据四个新状态继续扩展,直至出现f(0)或者无法生成新状态为止。注意:在各状态,除记录最少步数外,还需记录到达这一状态时各骨牌的放置情况;而当到达某一状态发现已记录有一种翻转策略时,则取步数较小的一种。 by 方奇(IOI2000论文集)
㈢ 贝贝在玩一个数学游戏,规则是:把剩下的7张多米诺骨牌插入相应的位置,每一行中要包括6组不同的点数,而
剩下的7张多米诺骨牌的点数为0、1、2、3、4、5、6,
1+2+3+4+5+6=21,即每一行中6组不同的点数的和的最大值为21;
因为每一行中要包括6组不同的点数,而且这些点数相加的和分别为:20、18、19,
所以这三行的点数分别含有:0、2、3、4、5、6;0、1、2、4、5、6;0、1、3、4、5、6;
第一列的点数的和为5,1+2+3=6,所以第一列的点数中必有0,为0、1、4或0、2、3,
因此第一行和第一列中都含有点数0,而且只有G中有一个0,因此G应放在第一行的前两个方格里,且第一个为0,第二个为6;
第一列的第一个方格里为0,第二个和第三个方格里为1、4或2、3,如果是2、3的话,第三行里已经有3,所以应当放到第一列的第二个方格(即第二行的第一个方格)里,而由上知第二行里不含有数字3,因此第一列的另两个方格里只能为1、4,经分析,第二个为1,第三个为4,即放编号为D的多米诺骨牌,
这样第三行的点数为4、3、1、0,还差点数5和6,即应放编号为F的多米诺骨牌,如果第三行的第五个格的点数为6,第五列的点数和为12,那么第五列其余的两个点数和为6,没有这样的多米诺骨牌,所以第一行的第五个方格里点数只能是5;
第五列的点数之和为12,所以第五列的第一个和第二个方格里的数字之和是12-5=7,满足题意的只有B、C两种多米诺骨牌,
B的点数为2、5,C的点数为3、4,第五列的最后一个方格里点数是5,所以第一个和第二个方格里不能再是5,所以C满足题意,
故答案为:C.
㈣ 计算机是怎么识别二进制语言或C语言的
C语言的程序是需要经过“编译”才能运行的,“编译”的过程就是将C语言翻译成计算机能识别的二进制代码(相同的C语言程序在不同的计算机上会被翻译成不同的二进制语言)
而二进制代码在计算机内部其实就是不同的电信号,比如100110的二进制代码可能就是高-低-低-高-高-低的电压信号。
至于为什么电信号能起到各种计算效果……可以说有点像“多米诺骨牌”吧,明明只是在某一端推倒一个骨牌,却能引发大量的“效应”。计算机内部的各个零部件就类似于此
㈤ 信息学用Pascal解决多米诺骨牌
var
i,j,t,t1,t2,len:longint;
n:longint;
a1,a2,a3,a4,a5,a6,a7:array[1..100000] of longint;
s1:string;
procere add() ;
var
c:longint;
d,e:longint;
begin
e:=0;
for c:=1 to t do
begin
d:=a1[c]+a2[c]+e;
a3[c]:=d mod 100000000;
e:=d div 100000000;
end;
if e>0 then begin t:=t+1;a3[t]:=e;end;
end;
procere by();
var
c1:longint;
d1,e1:longint;
begin
e1:=0;
for c1:=1 to t1 do
begin
d1:=a5[c1]+a4[c1]+e1;
a6[c1]:=d1 mod 100000000;
e1:=d1 div 100000000;
end;
if e1>0 then begin t1:=t1+1;a6[t1]:=e1;end;
end;
begin
assign(input,'domino.in');
reset(input);
assign(output,'domino.out');
rewrite(output);
readln(n);
fillchar(a1,sizeof(a1),0);
fillchar(a2,sizeof(a2),0);
fillchar(a3,sizeof(a3),0);
a1[1]:=2;
a2[1]:=4; t:=1;
for i:=3 to n do
begin
add();
for j:=1 to t do
a1[j]:=a2[j];
for j:=1 to t do
a2[j]:=a3[j];
end;
fillchar(a4,sizeof(a4),0);
fillchar(a5,sizeof(a5),0);
fillchar(a6,sizeof(a6),0);
a4[1]:=4;
a5[1]:=4; t1:=1;
for i:=3 to n do
begin
by();
for j:=1 to t1 do
a4[j]:=a6[j];
for j:=1 to t1 do
a5[j]:=a6[j];
end;
for i:=1 to t1 do
if a6[i]>=a3[i] then a7[i]:=a6[i]-a3[i]
else begin a6[i+1]:=a6[i+1]-1;a7[i]:=a6[i]-a3[i]+100000000;end;
t2:=100000;
while a7[t2]=0 do dec(t2);
write(a7[t2]);
for i:=t2-1 downto 1 do
begin
str(a7[i],s1);
len:=length(s1);
for j:=7 downto len do
s1:='0'+s1;
write(s1);
end;
close(input);
close(output);
end.
这就是源程序,我测试数据全部AC,望采纳,谢谢
㈥ 我们为什么要学C语言
C语言,似乎是一门很久远的语言了。但是身为程序员的我们,都对C语言有所了解。究竟我们为什么要学习C? C是写操作系统最常使用的编程语言(译注:没有之一)。Unix是用C写的第一个操作系统。后来Microsoft Windows,Mac OS X,还有GNU/Linu也都是用C写的。C不仅是操作系统的语言,也是其它几乎所有今天最流行的高级语言的先驱和灵感来源。事实上,Perl,PHP,Python和Ruby都是用C写的。 通过类推的方式,让我们这么说你一直在学的西班牙语、意大利语、法语或者葡萄语。你想过知道点拉丁语会很有用吗?因为拉丁语是所有这些语言的基础,了解了C,你就能理解和欣赏建构在传统C之上的整个编程语言家族。懂得C,就拥有了自由。 为什么是C,而不是汇编语言? 汇编语言提供了速度和最大的编程可控性,C提供的是可移植性。 不同的处理器必须采用不同的汇编语言来编程,必须选择其中一种,只能学习其中一种,这太*了。事实上,面对众多的计算机架构,C的一个主要优势在于其通用性和可移植性,而将硬件层的大多控制留给了汇编语言。 例如,C程序可以编译运行在如下设备上,HP 50g计算器(ARM处理器)、TI-89计算器(68000处理器)、Palm OS Cobalt智能手机(ARM处理器)、原始的iMac(PowerPC)、Arino(Atmel AVR)和Intel iMac(Intel Core 2 Duo)。这些设备每个都有自己的专有汇编语言,并且完全不兼容于任何其它一个设备的汇编语言。 汇编语言,很强大,但很难去编写大型应用程序,很难以逻辑方式去阅读和解释。C是一种编译语言,可以产生快速有效的可执行文件。C也是一个小型“所见即所得”语言:一个C语句最多对应着几个汇编语句,其它都以库函数的形式提供。 所以这就是C是如此流行的语言的原因? 就像推度多米诺骨牌一样,下一代的程序跟随着它的先辈的足迹。用C设计的操作系统通常都有用C设计的系统库。这些系统库反过来用于构建高级库(如OpenGL,或者GTK),这些库的设计者通常又会采用系统库所使用的语言。高级库又被应用级开发者用来设计字处理程序、游戏、媒体播放器等诸如此类。他们多数会选择采用高级库所使用的语言来编程。这种模式就这样如此如此进行... 为什么是C,而不是另一个高级语言? C最主要的设计是用于生成可移植代码,同时保持性能又能最小化脚印,而这本来就是“高级”接口打算在操作系统或者其它程序上发挥的作用。作为一种既稳定又成熟的语言,其特性长期来看未必会消失,而是移植到了大多(如果不是所有)的平台上。 例如,C程序能够编译运行在这些设备上,包括HP 50g计算器(ARM处理器)、TI-89计算器(68000处理器)、Palm OS Cobalt智能手机(ARM处理器)、原始的iMac(PowerPC)、Arino(Atmel AVR)和Intel iMac(Intel Core 2 Duo)。几乎所有流行的编程语言都至少能运行在这些设备的其中一种上,而C可能是唯一可以运行在三种以上的这些设备的编程语言。 一个最有力的理由是内存分配。不像大多计算机语言,C允许程序员直接写内存。在C中如结构体、指针和数组,这些设计的目的就是用一种高效且机器无关的方式去构建和操作内存。尤其是,C给出了在数据结构的内存层上的控制方法。此外,动态内存分配是程序员掌控,这必然意味着内存重分配成为了程序元的负担。而Java和Perl之类的语言则将程序员从对内存分配和指针的担心之中解救出来。一般而言这是件好事,因为写高级程序时处理内存一个很容易出错的过程。然而,当处理低层代码时,例如操作系统控制一个设备的部分,C提供了一个统一清晰的接口。在其它的高级语言如Java中则没有这些性能。 Perl、PHP、Python和Ruby这些语言可能很强大,能支持许多C缺省不支持的特性,而一般这些语言是不能用自己实现的。恰恰相反,这些语言多数最初都是依赖C(或者另一种高性能编程语言)写成,而且使用之前必须先要移植到新平台上。 与所有编程语言一样,是否优先选择C语言要视技术和商业需求而定
㈦ 为什么C语言可以编写程序
呵呵
因为以前的时候人们编写了一种执行代码用来进行程序的运行而且给他取名“C语言”
所以,C语言就可以编写程序
代码可以编写程序?
应该是说我们可以编写代码
然后代码经过编译、执行生成可执行文件
然后用户执行可执行文件进行程序操作吧
里面具体的过程我只是听说过
具体怎么回事我也不清楚
㈧ C语言处理文件这一章的问题
多米诺骨牌,一个倒,全部倒!
答案想必你已经知道了--第一个 fwrite(name, sizeof(char), 1, pfile);
------------第二个 fread(name, sizeof(char), length, pfile);
-------------第三个 fread(&age, sizeof(age), 1, pfile);
read,write一般来说是配对的,你把write写成1,我相信这是一个习惯动作。~
㈨ 多米诺骨牌c++
简单遍历.数
:R.R种形式间"."算作左边压趴麽
:R......种形式左边R压趴右边所.麽
:....L种右边"L"压趴所.麽
都YES
说R.L算作稳定形式咯
或者通俗说"R.(奇数点)L"才算做1稳定倒牌麽