本来想说这种题目根本用不到数组的,结果再仔细一看题目……似乎还确实有点难度 那么先找一下思路吧,假设每个人拿到的鱼数量依次为a(1)~a(5),则第i个人面前的鱼数量则为a(i)*5+1,而前后两个人拿到的鱼的数量有如下关系:第i个人拿走自己的a(i)条鱼之后,留给后面的人的鱼有a(i)*4条,即a(i)*4=a(i+1)*5+1 建立起这个关系,我们就可以从后往前逐步倒推出所要求的结果了:先让a(5)从1开始,逐步递增,用关系式依次计算出前面的数据,如果计算到某一步发现不可行(比如1*5+1=6,就不是4的倍数,a(5)=1是计算不出a(4)的),就让a(5)加1,重新尝试计算,直到计算出一个全部可行的结果为止 参考代码: dim a(1 to 5) as integer dim i as integer,n as integer do a(5)=a(5)+1 for i=5 to 2 step -1 n=a(i)*5+1 if n mod 4<>0 then exit for a(i-1)=n\4 next i loop until i=1 for i=1 to 5 ?a(i)*5+1; next i
miku_con 给了我意路,很精简,我在他的基础上,再精简一句。 Private Sub Command1_Click() Dim a(1 To 5) As Integer Dim i As Integer, n As Integer Xuen: a(5) = a(5) + 1 For i = 5 To 2 Step -1 n = a(i) * 5 + 1 If n Mod 4 <> 0 Then GoTo Xuen '如果不能被4整除 a(i - 1) = n \ 4 Next i For i = 1 To 5 Print a(i) * 5 + 1; Next i End Sub
这个题目就没有唯一答案,跟最后一个人分到的条数有关,假设最后一个人分到n条,那么第四个分之前的数量一定是2*(n+1)+1,第三个一定是3*(2*(n+1)+1)+1,第二个一定是4*(3*(2*(n+1))+1)+1类推也就是上一个是下一个+1乘2倍再加1,从这里来看答案应该有无数个 dim ren(5) ren(5)=inputbox("请输入第五个人分到的鱼的数量") for i=4 to 1 step -1 ren(i)=(6-i)*(ren(i+1)+1)+1 next i
上面那个按照人数来分的,确实是没读清楚题目,这样的话把上面的第五个人分到的鱼改成最后剩的鱼的条数,那么第五个分之前就是5*(n+1)+1,第四个就是5*(5*(n+1)+1)+1类推就是上一个是下一个的五倍多一条 dim ren(5) dim sheng sheng=inputbox("请输入第五个人分后剩余的条数") ren(5)=5*sheng+1 for i=4 to 1 setp -1 ren(i)=5*(ren(i+1)+1)+1 next i