穷举 迭代 while
for循環擁有兩類:
窮舉:?把所有可能的情況都走一遍,使用if條件篩選出來滿足條件的情況。
例:1.單位給發了一張150元購物卡,拿著到超市買三類洗化用品。洗發水15元,香皂2元,牙刷5元。求剛好花完150元,有多少種買法,沒種買法都是各買幾樣?
???????? //洗發水 x? 10
?????????//牙刷??? y? 30
?????????//香皂??? z? 75
??????????? int ci = 0;
??????????? int biao = 0;
??????????? for (int x = 0; x <= 10; x++)
??????????? {
??????????????? for (int y = 0; y <= 30; y++)
??????????????? {
??????????????????? for (int z = 0; z <= 75; z++)
??????????????????? {
??????????????????????? ci++;
??????????????????????? if (15 * x + y * 5 + z * 2 == 150)
??????????????????????? {
??????????????????????????? biao++;
??????????????????????????? Console.WriteLine("第{0}種買法:洗發水{1}瓶,牙刷{2}支,香皂{3}塊。", biao, x, y, z);
??????????????????????? }
??????????????????? }
??????????????? }
??????????? }
??????????? Console.WriteLine("總共有{0}種買法。", biao);
??????????? Console.WriteLine(ci);
??????????? Console.ReadLine();
????? 2.百雞百錢:公雞2文錢一只,母雞1文錢一只,小雞半文錢一只,總共只有100文錢,如何在湊夠100只雞的情況下剛好花完100文錢?同百馬百擔
????????????int n = 0;
??????????? for (int g = 0; g * 2 <= 100; g++)
??????????? {
??????????????? for (int m = 0; m <= 100; m++)
??????????????? {
??????????????????? for (int x = 0; x * 0.5 <= 100; x++)
??????????????????? {
??????????????????????? if (g * 2 + m + x * 0.5 == 100 && g + m + x == 100)
??????????????????????? {
??????????????????????????? Console.WriteLine("第{0}種:{1}只公雞,{2}只母雞,{3}只小雞", n, g, m, x);
??????????????????????????? n++;
??????????????????????? }
??????????????????? }
??????????????? }
??????????? }
??????????? Console.WriteLine("總共有{0}種可能性", n);
??????????? Console.ReadLine();
?????3.有1分錢,2分錢,5分錢的硬幣,要組合出來2角錢,有幾種組合方式,分別各多少個?
?int n = 0;
??????????? for (int a = 0; a * 1 <= 20; a++)
??????????? {
??????????????? for (int b = 0; b*2 <= 20; b++)
??????????????? {
??????????????????? for (int c = 0; c *5 <= 20; c++)
??????????????????? {
??????????????????????? if (a * 1 + b*2 + c * 5 == 20)
??????????????????????? {???
??????????????????????????? n++;
??????????????????????????? Console.WriteLine("第{0}種:{1}枚1分錢,{2}枚2分錢,{3}枚5分錢", n, a, b, c);
???????????????????????? }
??????????????????? }
??????????????? }
??????????? }
??????????? Console.WriteLine("總共有{0}種可能性", n);
??????????? Console.ReadLine();
迭代:?從初始情況按照規律不斷求解中間情況,最終推導出結果。
例:1.五個小朋友排成一隊,問第一個多大了,第一個說比第二個大兩歲,問第二個多大了,第二個說比第三個大兩歲。。。以此類推,問第5個小朋友,說自己3歲了。
????????問第一個小朋友幾歲了?
????????????int n = 1;
??????????? int a = 3;
??????????? while (n < 5)
??????????? {
??????????????? a += 2;
??????????????? n++;
??????????? }
??????????? Console.WriteLine("第一個小朋友{0}歲了", a);
??????????? Console.ReadLine();
?????2.紙張可以無限次對折,紙張厚度為0.07毫米。問多少次對折至少可以超過8848?
????????????double height = 0.07;//8848m=8848000
??????????? int ci = 0;
??????????? while (height <= 8848000)
??????????? {
??????????????? ci++;
??????????????? height *= 2;//height=height*2;
??????????? }
??????????? Console.WriteLine(ci);
??????????? Console.ReadLine();
while 循環
其實是for循環的變形寫法
for(int i = 1; i<=5;i++)
{
?循環體;
}
上面的for循環可以寫成
int i= 1;
for(;i<=5;)
{
?循環體;
?i++;
}
寫成while就是以下樣式
int i= 1;
while(表達式(i<=5))
{
?循環體;
?狀態改變(i++);
}
?
do
{
?循環體;
?狀態改變(i++);
}while(表達式(i<=5))
注意:do while是不管滿不滿足表達式,我都會先執行一遍。
?
跳轉語句:
break:跳出整個循環
continue:跳出本次循環,繼續下次循環。
轉載于:https://www.cnblogs.com/yp11/p/5827520.html
總結
以上是生活随笔為你收集整理的穷举 迭代 while的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift-数组
- 下一篇: Ubuntu开启SSHD服务