5月4日课堂内容:for循环的穷举、迭代
一、for循环拥有两类:
1、穷举:
把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。
2、迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。
二、穷举练习
1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品。洗发水15元,香皂2元,牙刷5元。求刚好花完150元,有多少种买法,每种买法都是各买几样?
int count = 0;//count数数的意思,多少种买法
int bian = 0;//看循环总共走了多少遍
for (int x = 0; x <= 10; x++)
{
for (int y = 0; y <= 30; y++)
{
for (int z = 0; z <= 75; z++)
{
bian++;
if (x * 15 + y * 5 + z * 2 == 150)
{
count++;
Console.WriteLine("第" + count + "种买法:洗发水" + x + "瓶,牙刷" + y + "支,香皂" + z + "块!");
}
}
}
}
Console.WriteLine("总共" + count + "买法!(符合题意的算法)");
Console.WriteLine("总共循环" + bian + "遍!(总共有这么多算法,但符合题意得的是count种算法)");
Console.ReadLine();
2、大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,要用100匹马,驼100石粮食,该如何分配?
int count = 0;
int bian = 0;
for (int dm = 0; dm <= 50; dm++)
{
for (int zm = 0; zm <= 100; zm++)
{
for (int xm = 0; xm <= 200; xm++)
{
bian++;
if (dm + zm + xm == 100 && dm * 2 + zm * 1 + xm * 0.5 == 100)
{
count++;
Console.WriteLine("第" + count + "种分配法:大马" + dm + "匹,中马" + zm + "匹,小马" + xm + "匹!");
}
}
}
}
Console.WriteLine("总共" + count + "种分配方法!");
Console.WriteLine("总共循环" + bian + "遍!");
Console.ReadLine();
3、有1分钱,2分钱,5分钱的硬币,要组合出来2角钱,有几种组合方式,分别各多少个?
int count = 0;
int bian = 0;
for (int yf = 0; yf <= 20; yf++)
{
for (int ef = 0; ef <= 10; ef++)
{
for (int wf = 0; wf <= 4; wf++)
{
bian++;
if (yf * 1 + ef * 2 + wf * 5 == 20)
{
count++;
Console.WriteLine("第" + count + "种组合方法:一分" + yf + "个,二分" + ef + "个,五分" + wf + "个!");
}
}
}
}
Console.WriteLine("总共" + count + "种组合方法!");
Console.WriteLine("总共循环" + bian + "遍!");
Console.ReadLine();
4、百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?
int count = 0;
int bian = 0;
for (int gong = 0; gong <= 50; gong++)
{
for (int mu = 0; mu <= 100; mu++)
{
for (int xiao = 0; xiao <= 200; xiao++)
{
bian++;
if (gong + mu + xiao == 100 && gong * 2 + mu * 1 + xiao * 0.5 == 100)
{
count++;
Console.WriteLine("第" + count + "种买法:公鸡" + gong + "只,母鸡" + mu + "只,小鸡" + xiao + "只!");
}
}
}
}
Console.WriteLine("总共" + count + "种买法!(符合题意的算法)");
Console.WriteLine("总共循环" + bian + "遍!(总共有这么多算法,但符合题意得的是count种算法)");
Console.ReadLine();
三、迭代练习
1、五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?
第一种:
int age = 3;
for (int i = 1; i <= 4; i++)
{
age += 2;
}
Console.WriteLine(age);
Console.ReadLine();
第二种:
int age = 3;
for (int i = 5; i > 1; i--)
{
age += 2;
}
Console.WriteLine(age);
Console.ReadLine();
2、纸张可以无限次对折,纸张厚度为0.07毫米。问多少次对折至少可以超过8848?
第一种:
double count = 0;
for (double i = 0.07; i <= 8848000; i *= 2)
{
count++;
}
console.writeline(count);
console.readline();
第二种:
int count = 0;
for (int i = 7; i <= 884800000; i *= 2)
{
count++;
}
Console.WriteLine(count);
Console.ReadLine();
3、//猴子摘了一些桃子,第一天吃了桃子的一半零一个,第二天又吃了剩下桃子的一半另一个.......
//第十天只剩下了一个桃子,问猴子到底摘了多少桃子
//分析:第九天=(1+1)*2,第八天=(第九天+1)*2......第一天=(第二天+1)*2
int t = 1;//从后往前倒推,设定第十天是一个桃子
for (int i = 1; i <= 9; i++)//总共十天,循环9次即可得出第一天的桃子数,所以i<=9
{
t++;//t=t+1,给下面的t重新赋值,可以看做是把猴子吃的那零一个给加上了
t *= 2;//t=t*2,t是重新赋值后的t,即加上了零一个后的数量,这个t是总数的一半,所以要乘以2
}
Console.WriteLine("猴子总共摘了"+t+"个桃子!");
Console.ReadLine();
四、while格式的写法,及练习
(一)写法:
while格式就是for变形得到的,初始条件拿到前面,循环的状态改变放到循环体的最后一句,for变成while,将原先的分号去掉,只留下循环条件
例:
int sum = 0;
int i = 1;
while (i <= 10)
{
sum += i;
i++;
}
Console.WriteLine(sum);
(二)练习:
1、纸张厚度0.07毫米,折叠多少次至少超过8848米
int count = 0;
double i = 0.07;
while (i <= 8848000)
{
count++;
i *= 2;//在本题中使用高度来限制次数,不确定要折叠多少次,所以i++此状态改变要去掉,记录次数count即可
}
Console.WriteLine(count);
Console.ReadLine();
2、百鸡百钱:公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只,总共只有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱?
int count = 0;
int gong = 0;
while (gong <= 50)
{
int mu = 0;
while (mu <= 100)
{
int xiao = 0;
while (xiao <= 200)
{
if (gong + mu + xiao == 100 && gong * 2 + mu * 1 + xiao * 0.5 == 100)
{
count++;
Console.WriteLine("第" + count + "种买法:公鸡" + gong + "只,母鸡" + mu + "只,小鸡" + xiao + "只!");
}
xiao++;
}
mu++;
}
gong++;
}
Console.WriteLine("总共" + count + "种买法!");
Console.ReadLine();
3、3、五个小朋友排成一队,问第一个多大了,第一个说比第二个大两岁,问第二个多大了,第二个说比第三个大两岁。。。以此类推,问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?
int age = 3;
int i = 5;
while ( i > 1)
{
age += 2;
i--;
}
Console.WriteLine(age);
Console.ReadLine();
4、输入一个100以内的数,输入正确,累加求和,输入错误,打印“请重新输入!”
for (; ; )
{
Console.Write("请输入一个100以内的正整数:");
int a = int.Parse(Console.ReadLine());
int sum = 0;
if (a >= 0 && a <= 100)
{
for (int j = 0; j <= a; j++)
{
sum += j;
}
Console.WriteLine(sum);
break;
}
else
{
Console.WriteLine("您的输入有误,请重新输入!");
}
}
Console.ReadLine();
5月4日课堂内容:for循环的穷举、迭代的更多相关文章
- for循环的嵌套,for循环的穷举迭代
for循环的嵌套 输入一个正整数,求阶乘的和 嵌套 Console.Write("请输入一个正整数:"); int ...
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容
2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud2018年10月16日直播内容
2018年10月16日直播内容 架构师揭秘springboot对springmvc的自动配置原理 直播地址:https://ke.qq.com/course/179440?tuin=9b386640 ...
- 2017年8月9日学习内容存放 #socket通信介绍
2017年8月9日学习内容存放 #socket通信介绍 ''' OSI七层 应用 表示 会话 传输 网络 ip 数据链路 mac 物理层 网线 http smtp dns ftp ssh snmp i ...
- 循环嵌套,while循环,穷举迭代循环
一.循环嵌套 简单的就是说,在一个for循环里嵌入多个小for循环. 其中,在打矩形.三角形和乘法口诀表之类的题目中,大for循环一般表示的是行数,其余的小for循环式每一行中的内容. 二.while ...
- C#4 for循环 迭代法 穷举法应用
for()循环. 四要素: 初始条件,循环条件,状态改变,循环体. 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加 ...
- C# for循环 迭代法 穷举法应用
迭代 //兔子生兔子 class Class5 { static void Main(string[] args) { int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子 ...
- C# 循环语句 for循环(嵌套 while 穷举 迭代)
for循环的嵌套类似于if else 事例: 打印矩阵,外循环对应行,内循环对应列 for (int k = 1; k <= 5; k++) { for (int i = 1; i <= ...
随机推荐
- Beaglebone Black - 准备
首先要玩 BBB,你需要买一台 BBB,淘宝 Element14 Beaglebone Black,我购入价 RMB 310,带数据线,没电源适配器的.Seeedstudio 有台叫 Beaglebo ...
- ABAP Enhancement:第一部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- CUBRID学习笔记 44 UPDATE 触发器 更新多表 教程
cubrid的中sql查询语法UPDATE c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com ...
- 寻找Linux单机负载瓶颈
寻找Linux单机负载瓶颈 服务器性能上不去,是哪里出了问题?IO还是CPU?只有找到瓶颈点,才能对症下药: 如何寻找Linux单机负载瓶颈,遵循的原则是不要推测,我们要通过测量的数据说话: 负载分两 ...
- POJ3009 Curling
题目链接:http://poj.org/problem?id=3009 题意:从2出发,要到达3, 0可以通过,碰到1要停止,并且1处要变成0, 并且从起点开始沿着一个方向要一直前进,直至碰到1(或者 ...
- 移动端 移动web屏幕适配方案 随不同宽度的屏幕而改变
链接地址1:http://www.cnblogs.com/zjzhome/p/4802157.html 链接地址2:http://www.html-js.com/article/Mobile-term ...
- ZOJ-2365 Strong Defence 无公共边割边集
题意:该题的题意晦涩,勉勉强强听别人说了一遍后再读了一遍题才算懂了题意,题图说的是A国因为B国药进攻自己的国家,于是想办法在联通A-B之间的路径上进行阻击.阻击的舰船停留在一个路径上,舰船上都要放置水 ...
- (一)使用springAPI以及自定义类 实现AOP-aop编程
Spring的另一个重要思想是AOP,面向切面的编程,它提供了一种机制,可以在执行业务前后执行另外的代码,Servlet中的Filter就是一种AOP思想的体现,下面通过一个例子来感受一下. 假设我们 ...
- MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)
本节开始为大家讲解偏向应用的知识--创建对话框. 对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工方面的工作,将其大大美 ...
- android瀑布流效果(仿蘑菇街)
Android 转载分享(10) 我们还是来看一款示例:(蘑菇街) 看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此. ...