free pascal中的一道编程题目,只需解释一下。。。
pascal编程:赵、钱、孙、李、周五人围着一张圆桌吃饭。饭后,周回忆说:“赵坐在钱旁边,钱的左边是孙或李”;李回忆说:“钱坐在孙旁边,我挨着孙做。结果他们一句也没有说对...
pascal编程:赵、钱、孙、李、周五人围着一张圆桌吃饭。饭后,周回忆说:“赵坐在钱旁边,钱的左边是孙或李”;李回忆说:“钱坐在孙旁边,我挨着孙做。结果他们一句也没有说对,问他们是怎么做的??
程序如下:
var zhao,qian,sun,li,zhou,a,i,j,k:longint;
begin
for zhao:=1 to 5 do
for qian:=1 to 5 do
for sun:=1 to 5 do
for li:=1 to 5 do
for zhou:=1 to 5 do
if zhao+qian+sun+li+zhou=15 then
if zhao*qian*sun*li*zhou=120 then
begin
if (qian mod 5+1=zhao)or((qian+3) mod 5+1=zhao) then continue; 他这里为什么要mod 5啊?
if ((qian+3) mod 5+1=sun)or((qian+3)mod 5+1=li) then continue;这里也是。
if ((sun+3) mod 5+1=qian) then continue;这里和下面都是
if ((sun+3) mod 5+1=li)or(sun mod 5+1=li) then continue;
writeln('zhao=',zhao,' qian=',qian,' sun=',sun,' li=',li,' zhou=',zhou);
end;
end.
有没有更加简便的方法啊???他这个好复杂可不可以不用continue? 展开
程序如下:
var zhao,qian,sun,li,zhou,a,i,j,k:longint;
begin
for zhao:=1 to 5 do
for qian:=1 to 5 do
for sun:=1 to 5 do
for li:=1 to 5 do
for zhou:=1 to 5 do
if zhao+qian+sun+li+zhou=15 then
if zhao*qian*sun*li*zhou=120 then
begin
if (qian mod 5+1=zhao)or((qian+3) mod 5+1=zhao) then continue; 他这里为什么要mod 5啊?
if ((qian+3) mod 5+1=sun)or((qian+3)mod 5+1=li) then continue;这里也是。
if ((sun+3) mod 5+1=qian) then continue;这里和下面都是
if ((sun+3) mod 5+1=li)or(sun mod 5+1=li) then continue;
writeln('zhao=',zhao,' qian=',qian,' sun=',sun,' li=',li,' zhou=',zhou);
end;
end.
有没有更加简便的方法啊???他这个好复杂可不可以不用continue? 展开
1个回答
展开全部
//mod 5是因为这张桌子是圆的,而不是一条线,所以首尾相接,而mod 5+1就是判断第五个位置和第一个位置能否相容。
var
zhao,qian,sun,li,zhou:longint;
begin
for zhao:=1 to 5 do
for qian:=1 to 5 do
for sun:=1 to 5 do
for li:=1 to 5 do
for zhou:=1 to 5 do
if zhao+qian+sun+li+zhou=15 then
if zhao*qian*sun*li*zhou=120 then
if (qian mod 5+1<>zhao)and((qian+3) mod 5+1<>zhao) then
if ((qian+3) mod 5+1<>sun)and((qian+3)mod 5+1<>li) then
if (sun+3) mod 5+1<>qian then
if ((sun+3) mod 5+1<>li)and(sun mod 5+1<>li) then
writeln('zhao=',zhao,' qian=',qian,' sun=',sun,' li=',li,' zhou=',zhou);
end.
var
zhao,qian,sun,li,zhou:longint;
begin
for zhao:=1 to 5 do
for qian:=1 to 5 do
for sun:=1 to 5 do
for li:=1 to 5 do
for zhou:=1 to 5 do
if zhao+qian+sun+li+zhou=15 then
if zhao*qian*sun*li*zhou=120 then
if (qian mod 5+1<>zhao)and((qian+3) mod 5+1<>zhao) then
if ((qian+3) mod 5+1<>sun)and((qian+3)mod 5+1<>li) then
if (sun+3) mod 5+1<>qian then
if ((sun+3) mod 5+1<>li)and(sun mod 5+1<>li) then
writeln('zhao=',zhao,' qian=',qian,' sun=',sun,' li=',li,' zhou=',zhou);
end.
更多追问追答
追问
又是你啊,呵呵
每次都是你回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询