for穷举法、迭代法
穷举法练习:
//穷举法: //1、找100以内的与7有关的数 //2、小明单位发了一百元的购物卡,他到超市买洗化用品,一是洗发水(15元),二是香皂(2元),三是牙刷(5元)怎么可以正好把一百元花完。 //3、公鸡两文钱一只,母鸡一文钱一只,小鸡半文钱一只,花100文钱买100只鸡,该如何购买? //4、大马驮2石粮食,中马驮1石粮食,两头小马驮一旦粮食,要用100匹马,驮100石粮食,该如何调配 //5、有一分钱、两分钱、五分钱硬币,要组合出两角有哪些组合方法。 //6、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: //A和B两人中至少去一人; a+b>=1 //A和D不能一起去; a+d<=1 //A、E和F三人中要派两人去; a+e+f==2 //B和C都去或都不去; 注释: b+c!=1 //C和D两人中去一个; c+d==1 //若D不去,则E也不去。 d+e==0||d==1 //问应当让哪几个人去? //7、123()45()67()8()9=100;要求在()里面填写+或-使等式成立。 //2、小明单位发了一百元的购物卡,他到超市买洗化用品,一是洗发水(15元),二是香皂(2元),三是牙刷(5元)怎么可以正好把一百元花完。 for (int i = 1; i <= 6; i++)//i:单独买洗发水最多可以买6 { for (int j = 1; j <= 50; j++)//j:香皂单独买最多50 { for (int n = 1; n <= 20; n++)//n:牙刷单独买最多20 { if (15 * i + 2 * j + 5 * n == 100)//判断什么情况可以把一百元花光 { Console.WriteLine("{0}瓶洗发水和{1}块香皂和{2}个牙刷一共一百元", j, j, n); } } } } //3、公鸡两文钱一只,母鸡一文钱一只,小鸡半文钱一只,花100文钱买100只鸡,该如何购买? for (int i = 0; i < 50; i++)//i:公鸡两文钱一只 { for (int j = 0; j < 100; j++) { for (int n = 0; n < 200; n++) { if (2 * i + j + 0.5 * n == 100 && i + j + n == 100) { Console.WriteLine("满足条件需要公鸡{0}只,母鸡{1},小鸡{2}。", i, j, n); } } } } //4、大马驮2石粮食,中马驮1石粮食,两头小马驮一旦粮食,要用100匹马,驮100石粮食,该如何调配 for (int i = 1; i <= 50; i++) { for (int j = 1; j <= 100; j++) { for (int n = 1; n <= 200; n++) { if (2 * i + j + 0.5 * n == 100 && i + j + n == 100) { Console.WriteLine("满足条件需要大马{0}只,中马{1},小马{2}。", i, j, n); } } } } //某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: //A和B两人中至少去一人; a+b>=1 //A和D不能一起去; a+d<=1 //A、E和F三人中要派两人去; a+e+f==2 //B和C都去或都不去; 注释: b+c!=1 //C和D两人中去一个; c+d==1 //若D不去,则E也不去。 d+e==0||d==1 //问应当让哪几个人去? for (int a = 0; a <= 1; a++) { for (int b = 0; b <= 1; b++) { for (int c = 0; c <= 1; c++) { for (int d = 0; d <= 1; d++) { for (int e = 0; e <= 1; e++) { for (int f = 0; f <= 1; f++) { if (a + b >= 1 && a + d <= 1 && a + e + f == 2 && b + c != 1 && c + d <= 1 && (d + e == 0 || d == 1)) { Console.WriteLine("A:{0}\nB:{1}\nC:{2}\nD:{3}\nE:{4}\nF:{5}", a, b, c, d, e, f); } } } } } } } //7、123()45()67()8()9=100;要求在()里面填写+或-使等式成立。 //string a, b; //a = "+"; //b = "-"; for (int i = -1; i <= 1; i += 2)// 初始值-1 判断条件限定i只能是-1 或者+1 i+=2 ==> i=i+2 { for (int j = -1; j <= 1; j += 2) { for (int n = -1; n <= 1; n += 2) { for (int m = -1; m <= 1; m += 2) { if (123 + i * 45 + j * 67 + n * 8 + m * 9 == 100) { //if (i==1||i == -1||j==1||j == -1||n==1||n == -1||n==1||m == -1) //{ //} Console.WriteLine("123+({0}*45)+({1}*67)+({2}*8)+({3}*9)=100", i, j, n, m); } } } } }
迭代法练习:
//求阶乘(6的阶乘) int jc = 1; for (int i = 6; i >= 1; i--) { jc = i * jc; } Console.WriteLine("6的阶乘是:" + jc); //求年龄。(有6个小孩子排在一起,问第一个多大年龄,她说:比第二个小2岁,问第二个多大年龄,她说:比第三个小2岁,以此类推,问第六个多大年龄,她说:自己16岁,问第一个小孩子几岁?) int age = 16; for (int i = 5; i >= 1; i--)//i为第二个小孩岁数 { age -= 2; } Console.WriteLine("第一个小孩的年龄是:" + age + "岁"); //一张纸的厚度是:0.15mm,假设这张纸足够大可以无限次对折,问:折26次的高度是多少? double a = 0.00015; for (int i = 1; i <= 26; i++) { a *= 2; } Console.WriteLine("当纸折叠26次时,厚度为:" + a + "米"); //棋盘放粮食(请在第一个格子放1粒粮食,第二个格子放2粒,第三个格子放四粒,以此类推, //每个格子放的粮食都是前一个格子里粮食的2倍,直到放到第64个格子,请问第64个格子需要多少粮食? //假如1粒粮食重量0.02克,那么棋盘64个格子的粮食一共重多少千克? decimal sum = 0, num = 1; for (int i = 1; i <= 64; i++) { num = num * 2; sum = num + i; } Console.WriteLine("第64个格子需要粮食:{0}", sum); decimal w = (decimal)0.00002; decimal sw = w * sum; Console.WriteLine("棋盘所有64个格子 上面粮食总重:{0}", sw); //公园里有一只猴子和一堆桃子,猴子每天吃掉桃子数量的一半, //把剩下的一半数量中扔掉一个坏的,到了第七天, //猴子睁开眼发现只剩下一个桃子了,问公园原来有多少桃子? int count=1; for (int i = 6; i >= 1; i--) { count = (count + 1) * 2; } Console.WriteLine("原来桃子数:{0}",count);
时间: 2024-10-15 22:47:37