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?
展开
 我来答
szwpvz
2014-11-15 · TA获得超过640个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:255万
展开全部
//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.
更多追问追答
追问
又是你啊,呵呵
每次都是你回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式