11.17C语言,贪心算法,n个人搬n块砖头

利用三重for循环嵌套的贪心算法

#include<stdio.h>

int main(void) {
    int flag, n1, n2, n5, moeny;
    flag = 1;
    printf("Enter moeny:");
    scanf("%d", &moeny);
    for (n5 = moeny / 5; (n5 >= 0) && (flag == 1); n5--) {
        for (n2 = moeny / 2; (n2 >= 0) && (flag == 1); n2--) {
            for (n1 = moeny - n5 * 5 - n2 * 2; (n1 >= 0) && (flag == 1); n1--) {
                if ((n5 * 5 + n2 * 2 + n1) == moeny) {
                    printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n", n5, n2, n1, n1 + n2 + n5);
                    flag = 0;
                }
            }
     /   }
    }
    return 0;
}

当找到满足条件的解,就不必继续循环了,此时需要退出三重循环,break语句只能终止当前循环,不能同时退出多重,运用引入变量flag共同描述循环条件,初始值为1,一旦找到满足条件的解,将flag赋值给0,从而使所有循环条件为假,以终止三重循环

函数的调用一般有两种形式:1.通过赋值语句,如

#include <stdio.h>  
int fun(int num);
int main(void){
    int n,num;
    scanf("%d",&num);
    printf("%d是一个%d位数\n",num,fun(num));
    return 0;
}
int fun(int num){
    int n=0;
    while(num!=0){
        n++;
        num/=10;
    }
    return n;
}

n=fun(num),将该函数的返回值赋值给变量;

2.输出函数的实际参数,如printf("%d",fun(num))

参数传递

函数定义时,应该注意变量名和函数名不能相同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值