C++比我疆土算法问题

作者&投稿:宾司 (若有异议请与网页底部的电邮联系)
古代疆域的管理方法?~

朝代 地方
先秦分封制 宗法制 礼乐制 (世卿世禄贵族政治)
秦 郡县制(官僚制度取代贵族制度重要标志)
汉 郡国并行→七国之乱(景帝平息)→汉武帝推恩令
唐 设节度使→安史之乱→藩镇割据
宋 行政:中央派文臣做地方官,通判监督;兵权:收归中央,禁军;财权:转运使管地方财政
元 行省制度
明 废行省设三司
清代的忘了……具体名词如有不懂的请追问或自行百度一下……

测量和计算是一对孪生兄弟。随着我国测量技术的发展,相关的计算理论和方法也发展起来。三国时期(公元3世纪),出现了第一部测算专著——《海岛算经》。
《海岛算经》是三国时期的数学家刘徽所著。他在为《九章算术》作注时,写了《重差》一卷,附于该书之后。唐代数学家李淳风将《重差》单列出来,取名《海岛算经》,并列为我国古代的数学经典《算经十书》之一。该书全部9个算例均涉及测高望远及其计算问题。9个算例分别是:测量海岛的高度(望海岛),测量山上的松树的高度(望松),测量城市的大小(望邑),测量涧谷的深度(望谷),居高测量地面上塔楼的高度(望楼),测量河流的宽度(望波口),测量清水潭的深度(望清渊),从山上测量湖塘的宽度(望津),从山上测量一座城市的大小(临邑)。为解决这些问题,刘徽提出了重表法、连索法和累距法等具体的测量和计算方法。这些方法归结到一点,就是重差测量术。重差测量术是借助矩、表、绳的简单测量工具,依据相似直角三角形对应边成比例的内在关系,进行测高、望远、量深的理论和方法。在刘徽之前,赵爽在为《周髀算经》作注时曾作日高图,首先提出了重差测量理论。而刘徽在《海岛算经》中活用重差理论,巧妙地提出了多种具体的测量和计算方法,把重差测量理论推广开来。
《海岛算经》是一部影响久远的测算专著。它所详细揭示的重差测量理论和方法,成为古代测量的基本依据,为实现直接测量(步量或丈量)向间接测量的飞跃架起了桥梁。直到今天,重差测量理论和方法在某些场合仍有借鉴意义。

上面是所有情况:这种方法称为枚举法,就是所有组合全部。你也看出来了,只不是1234的全部组合。所以用四层循环就可以枚举所有的情况,同时我们知道只要确定前三个,第四个就定的d = 10 – (a + b +c);

for(a = 1;a < 4;a++)

{

 for(b = 1;b < 4;b++)

        { 

 /*a不能与b重合*/

  for(c = 1;c < 4;c++)

                 {

               /*c不能与ab相同*/

              d = 10 – (a + b +c);

             //……..

                 }

          }

}

循环说完了,再来讨论说话的,问题:

加拿大学生:加拿大最大,美国最小,俄罗斯第三。

他的话等价于a = 1、b = 4、c = 3 

三个有一个对,说明只一个是1,其它是0,因为布尔逻辑只有0和1,那么只有一个对的表示方式有:

((a == 1) + (b == 4) + (c == 3)) == 1  (好好体会)

如果说有两个对呢,那么之和就是2了,如果说都对了一部分不知道对几个,那你它们相加大于等于1,全错当然就是0了。

美国学生:美国最大,加拿大最小,俄罗斯第二,中国第三:

等价于:b = 1、a = 4、c = 2、d = 3

中国学生:美国最小,加拿大第三:

等价于:b = 4、a = 3

其实这种编程题目的解决方法很模式化:最重要的是找到不变量和变量,这里的不变量是4个国家,国家的面积值,剩下的就是判断错误的啊。要正确把握题目的意思,这些东西离散数学上都有,这都是比较容易的,像什么三句对一句,四句错两句之类多多运用就可以了。



你少了一个人说的话哦…………

主要思路是这样的,a,b,c,d分别代表了四个国家,你可以自己看看,其中a:加拿大,b:美国,c:俄罗斯,d:中国。然后用1,2,3,4代表国家的大小。从题目可以判断出,abcd的值只在1~4中取,并且每个值只能取一次。然后就遍历每种组合(其实程序没设计好,循环了很多次没用的)。然后在每次循环中利用每个人说的话进行判断。打个比方说(a==1)+(b==4)+(c==3)==1,其实就是加拿大学生所说的那个话,加拿大最大,美国最小,俄罗斯第三。而后面的==1,就是为了判断这其中只有一个是正确的。(如果其中有两个假设成立,那么逻辑判断出来的值1,1,0相加就会等于2)当四个人的话都是正确的时候就把结果输出。他那个很长的判断就是做这个事情的。

其他语法方面的我就不说了,只说思路,还不懂的话再发信息给我吧

C++比我疆土算法问题
答:/*a不能与b重合*/ for(c = 1;c < 4;c++){ /*c不能与ab相同*/ d = 10 – (a + b +c);//……..} } } 循环说完了,再来讨论说话的,问题:加拿大学生:加拿大最大,美国最小,俄罗斯第三。他的话等价于a = 1、b = 4、c = 3 三个有一个对,说明只一个是1,其它是0,...