查看: 481|回复: 5|关注: 0

[已解决] 求解答疑问 for循环求解不等式组整数解

[复制链接]

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
本帖最后由 觞未央 于 2018-7-10 15:21 编辑

解不等式组  x+y>=5        的整数解时;
                  2x+y<=10
我想通过for循环语句找到不等式组的最小整数解,计算过程如下所示n=1;
f=[];
for x=1:10
for y=1:10
if x+y>=5&&2*x+y<=10
f=[x y];
break;
else
n=n+1;
end
end
end
最终的结算变量f=[4,1] n=67  x=10  y=10

可是按照我的计算过程,运算结果不应该是[1,4]吗,运算次数4次就可以了。为什么运算结果是[4,1],并且运算次数67?
如果我写的编码错了,正确的又该是什么?




QQ图片20180710150713.png
QQ图片20180710150713.png

论坛优秀回答者

入门

136 麦片

财富积分


50500


0

主题

314

帖子

29

最佳答案
  • 关注者: 6
发表于 2018-7-10 15:57:56 | 显示全部楼层
因为你的break只断了for y=1:10循环,没有断for x=1:10,再加一层循环
clear all;
clc;
f=[];
n=1;
x=1;
y=1;
for x=1:10
     if x+y>=5&&2*x+y<=10
       break;
   end
for y=1:10
   
if x+y>=5&&2*x+y<=10
f=[x y];
break;
else
n=n+1;
end
end
end
n
f

入门

59 麦片

财富积分


50500


1

主题

40

帖子

7

最佳答案
  • 关注者: 3
发表于 2018-7-10 16:01:13 | 显示全部楼层 |此回复为最佳答案
break 只能跳出一层循环,而不是两层,所以即便内层 break 出来了,外层又继续下一轮。
所以要么设定一个 flag:
  1. f=[];
  2. n=0;
  3. nice=false;

  4. for x=1:10
  5.     for y=1:10
  6.         n=n+1;
  7.         if x+y>=5 && 2*x+y<=10, f=[x y]; nice=true; break; end
  8.     end
  9.     if nice, break; end;
  10. end

  11. f
  12. n
复制代码

要么包装成函数:

  1. function [f, n] = equ()
  2.     n=0;
  3.     for x=1:10
  4.         for y=1:10
  5.             n=n+1;
  6.             if x+y>=5 && 2*x+y<=10, f=[x y]; return; end
  7.         end
  8.     end
  9. end
复制代码
调用 :
  1. [f, n] = equ()
复制代码


上面结果均返回
  1. f =
  2.      1     4
  3. n =
  4.      4
复制代码


新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2018-7-10 16:12:11 | 显示全部楼层
wjb986555360 发表于 2018-7-10 15:57
因为你的break只断了for y=1:10循环,没有断for x=1:10,再加一层循环
clear all;
clc;

哦,明白了,十分感谢。

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2018-7-10 16:13:37 | 显示全部楼层
shinemic 发表于 2018-7-10 16:01
break 只能跳出一层循环,而不是两层,所以即便内层 break 出来了,外层又继续下一轮。
所以要么设定一个 f ...

你的回答这么详细,明白了,太感谢了。

论坛优秀回答者

入门

136 麦片

财富积分


50500


0

主题

314

帖子

29

最佳答案
  • 关注者: 6
发表于 2018-7-10 16:35:49 | 显示全部楼层
给个最佳答案
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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