袁一航


私信TA

用户名:dotcpp0689705

访问量:3164

签 名:

https://www.msn.cn/zh-cn/play/arcade

等  级
排  名 844
经  验 3632
参赛次数 12
文章发表 74
年  龄 0
在职情况 学生
学  校 景园中学
专  业

  自我简介:

Gold Digger https://supermario-game.com/fullscreen

TA的其他文章

暴力破解法是指从可能的解集合(空间)中一一列举各情况,用题目给定的检验条件判定哪些是没用的,哪些是有用的。能使命题成立的值,即为问题的解。

基本思路:
(1)确定问题的可能解的范围(可能解的空间)。

(2)逐一列出可能解集合中的元素,验证是否是问题的解。

优化方向:通过加强约束条件,缩小可能解的集合的规模。
按照暴力破解法的思想,我们首先会想到的就是直接所有循环破解。

解法一:
1.抽象出数学模型,这里指的就是方程组

设公鸡为x,母鸡为y,小鸡为z,

鸡: x+y+z=100

钱: 5x+3y+1/3z=100

2.代码

#include<iostream>

using namespace std;

int main()

{   

 int x,y,z;   

 for(x=0;x<=20;x++)//公鸡不会超过20只       

 for(y=0;y<=34;y++)//母鸡不会超过34只           

 for(z=0;z<=100;z++)//小鸡不会超过100只               

 if((x+y+z)==100 && (5*x+3*y+z/3)==100&&z%3==0)//同时要满足z是3的整数

cout<<"cock="<<x<<","<<"hen="<<y<<","<<"chicken="<<z<<endl;    

return 0;

}


解法二:
1.减少一个循环的嵌套,模型不变,进一步优化算法

2.代码

#include<iostream>

using namespace std;

int main(){    int x,y,z;   

 for(x=0;x<=20;x++)//公鸡不会超过20只        

for(y=0;y<=34;y++)//母鸡不会超过34只        

{            z=100-x-y;//根据x,y可求出z            

if(z==(300-15*x-9*y)&&z%3==0)

cout<<"cock="<<x<<","<<"hen="<<y<<","<<"chicken="<<z<<endl;        

}                            

return 0;

}

解法三:1. 继续减少一个循环的嵌套

鸡: x+y+z=100

钱: 15x+9y+z=300

=>>7x+4y=100 ->y ->z

2.代码:

#include<iostream>

using namespace std;

int main()

{    

int x,y,z;    

for(x=0;x<=20;x++)//公鸡不会超过20只    

{        

y=25-1.75*x;//先求y       

 z=100-x-y;//再求z        

if(z==(300-15*x-9*y)&&z%3==0&&y>0&&&z>0)

cout<<"cock="<<x<<","<<"hen="<<y<<","<<"chicken="<<z<<endl;    

}   

 return 0;

}

因为【判断不太严格】,so————————————————————————————偷鸡


                                                                                           代码如下:

#include<iostream>

using namespace std;

int main()

{

   cout<<"cock=0,hen=25,chicken=75"<<endl<<"cock=4,hen=18,chicken=78"<<endl<<"cock=8,hen=11,chicken=81"<<endl<<"cock=12,hen=4,chicken=84";

   return 0;

}




 

0.0分

1 人评分

  评论区

  • «
  • »