查看: 548|回复: 2|关注: 0

[已解决] 求和超过门限判断保存

[复制链接]

新手

14 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
问题描述:给定1-10十个数,从1开始累加,当和超过15时,保存上一步的结果并继续,输出结果应为[15 13 8 9 10 ],但在代码实现过程中循环逻辑不正确。
代码:
  1. clear
  2. clc
  3. R=[1 2 3 4 5 6 7 8 9 10];
  4. c=1;
  5. th=15;
  6. x=0
  7. for j=1:10
  8.         for i=c:10

  9.             if(x<=th)
  10.                 x=x+R(1,i);
  11.             else
  12.                 x=x-R(1,i);
  13.                 c=i;
  14.                 d{j}=x;
  15.                 n{j}=c;
  16.                 break
  17.                 x=0;
  18.             end

  19.         end
  20. end
复制代码

论坛优秀回答者

入门

253 麦片

财富积分


50500


42

主题

566

帖子

52

最佳答案
QQ
  • 关注者: 20
发表于 2018-5-16 14:48:03 | 显示全部楼层 |此回复为最佳答案
本帖最后由 ylc5177146 于 2018-5-16 14:49 编辑

我觉得那个10不应该放入结果
因为没有判断
如果要放进去的话
去掉注释的就行

希望可以看到大神的精简程序0.0
clear
clc
R=[1 2 3 4 5 6 7 8 9 10];
th=15;
x=0;
Result=[];
start=1;
len=1;
while len<=length(R)

    for k=start:length(R)
        x=x+R(k);
        if x>th
            Result=[Result,x-R(k)];
            x=0;
            start=k;
            break;
        end
    end
    % if start==length(R)
    %     Result=[Result,R(start)];           break;
    % end
    if start+1>length(R)
        break;
    end
end




新手

14 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 2018-5-16 15:28:10 | 显示全部楼层
ylc5177146 发表于 2018-5-16 14:48
我觉得那个10不应该放入结果
因为没有判断
如果要放进去的话

感谢大神,10确实不应在结果里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表