![]() |
#2
自由而无用2021-10-03 15:50
|
整钱换零钱,一元钱可兑换成1角,2角,5角,问共有多少种方案,并请按格式输出所有的方案。
第一行开始,按格式输出所有的方案
最后一行输出多少种方案
![]() |
#2
自由而无用2021-10-03 15:50
https://blog.
|
![]() |
#3
rjsp2021-10-03 18:03
并请按格式输出所有的方案 你题目不肯帖全,因此我就只能讨论主要算法一元钱可兑换成1角,2角,5角 也就是 a*1 + 2*b + 5*c = 10 从大到小循环,可缩减循环次数,也可避免无效循环 故而有代码 ![]() #include <stdio.h> int main( void ) { for( unsigned c=0; 5*c<=10; ++c ) for( unsigned b=0; 5*c+2*b<=10; ++b ) printf( "%u个1角,%u个2角,%u个5角\n", 10-5*c-2*b, b, c ); } |
![]() |
#4
自由而无用2021-10-03 20:09
//online parser: https://www.bccn.net/run/
![]() #include <stdio.h> typedef struct dollar_sys { int dime; int tw_cents; int hf_dollar; }vdos; int calc_dos(vdos *pdos) { int one_dollar = 100; one_dollar -= pdos->dime * 10; if (one_dollar < 0) return 0; one_dollar -= pdos->tw_cents * 20; if (one_dollar < 0) return 0; one_dollar -= pdos->hf_dollar * 50; if (one_dollar < 0) return 0; return 0 == one_dollar ? 1 : 0; } int main(int argc, char *argv[]) { vdos dos = {0}; int i = 0; #define USR_EXP_CNT 1000 while (i++ < USR_EXP_CNT) { dos.dime = ((unsigned char *)main)[i] % 10; dos.tw_cents = ((unsigned char *)calc_dos)[i + 1] % 10; dos.hf_dollar = ((unsigned char *)main)[i + 2] % 10; if (calc_dos(&dos)) { puts("Mr.main bingo!"); printf("dime = %d ", dos.dime); printf("tw_cents = %d ", dos.tw_cents); printf("hf_dollar = %d\n", dos.hf_dollar); puts("------------------------------------"); } } return 0; } output sample: Mr.main bingo! dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 2 tw_cents = 4 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ Mr.main bingo! dime = 5 tw_cents = 0 hf_dollar = 1 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ Mr.main bingo! dime = 0 tw_cents = 0 hf_dollar = 2 |
![]() |
#5
自由而无用2021-10-03 22:33
//online parser: https://www.bccn.net/run/
![]() #include <stdio.h> typedef struct mini_game_obj { int level; int exp; int achv[11]; }vmg; typedef struct dollar_obj { int dime; int tw_cents; int hf_dollar; vmg mg; }vdos; int calc_dos(vdos *pdos) { int one_dollar = 100; one_dollar -= pdos->dime * 10; if (one_dollar < 0) return 0; one_dollar -= pdos->tw_cents * 20; if (one_dollar < 0) return 0; one_dollar -= pdos->hf_dollar * 50; if (one_dollar < 0) return 0; return 0 == one_dollar ? 1 : 0; } int check_sum(int *cs, int rs) { int i; for (i = 0; i < 10; i++) if (cs[i] == rs) return 1; return 0; } int main(int argc, char *argv[]) { vdos dos = {0}; int i = 0; #define USR_EXP_CNT 1000 while (i++ < USR_EXP_CNT) { dos.dime = ((unsigned char *)main)[i] % 10; dos.tw_cents = ((unsigned char *)calc_dos)[i + 1] % 10; dos.hf_dollar = ((unsigned char *)main)[i + 2] % 10; if (calc_dos(&dos)) { #define REC_PTR 10 #define rec_sum (dos.dime * 100 + dos.tw_cents * 10 + dos.hf_dollar) //new rec_sum if (!check_sum(dos.mg.achv, rec_sum)) { dos.mg.achv[dos.mg.achv[REC_PTR]++] = rec_sum; puts("!!---new achievement---!!"); #define add_exp (dos.dime + dos.tw_cents + dos.hf_dollar) dos.mg.exp += add_exp; printf("obtained exp: %d\n", add_exp); } else { // exp /= 2; dos.mg.exp += (add_exp >> 1); printf("obtained exp: %d\n", (add_exp >> 1)); } //show status printf("Mr.main[LV_%d] bingo! exp = %d\n", dos.mg.level, dos.mg.exp); printf("dime = %d ", dos.dime); printf("tw_cents = %d ", dos.tw_cents); printf("hf_dollar = %d\n", dos.hf_dollar); //level up #define FIXED_LEVEL_UP 25 if (dos.mg.exp >= FIXED_LEVEL_UP) { puts("Mr.main LV up!!!"); dos.mg.level++; dos.mg.exp -= 25; } puts("------------------------------------"); } } return 0; } output sample: !!---new achievement---!! obtained exp: 8 Mr.main[LV_0] bingo! exp = 8 dime = 6 tw_cents = 2 hf_dollar = 0 ------------------------------------ !!---new achievement---!! obtained exp: 5 Mr.main[LV_0] bingo! exp = 13 dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ !!---new achievement---!! obtained exp: 2 Mr.main[LV_0] bingo! exp = 15 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ obtained exp: 1 Mr.main[LV_0] bingo! exp = 16 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ !!---new achievement---!! obtained exp: 4 Mr.main[LV_0] bingo! exp = 20 dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ obtained exp: 2 Mr.main[LV_0] bingo! exp = 22 dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ obtained exp: 1 Mr.main[LV_0] bingo! exp = 23 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ obtained exp: 2 Mr.main[LV_0] bingo! exp = 25 dime = 1 tw_cents = 2 hf_dollar = 1 Mr.main LV up!!! ------------------------------------ obtained exp: 2 Mr.main[LV_1] bingo! exp = 2 dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ obtained exp: 2 Mr.main[LV_1] bingo! exp = 4 dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ !!---new achievement---!! obtained exp: 6 Mr.main[LV_1] bingo! exp = 10 dime = 5 tw_cents = 0 hf_dollar = 1 ------------------------------------ obtained exp: 1 Mr.main[LV_1] bingo! exp = 11 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ obtained exp: 2 Mr.main[LV_1] bingo! exp = 13 dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ obtained exp: 2 Mr.main[LV_1] bingo! exp = 15 dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ obtained exp: 1 Mr.main[LV_1] bingo! exp = 16 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ obtained exp: 1 Mr.main[LV_1] bingo! exp = 17 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ !!---new achievement---!! obtained exp: 6 Mr.main[LV_1] bingo! exp = 23 dime = 2 tw_cents = 4 hf_dollar = 0 ------------------------------------ obtained exp: 1 Mr.main[LV_1] bingo! exp = 24 dime = 0 tw_cents = 0 hf_dollar = 2 ------------------------------------ obtained exp: 2 Mr.main[LV_1] bingo! exp = 26 dime = 0 tw_cents = 5 hf_dollar = 0 Mr.main LV up!!! ------------------------------------ obtained exp: 2 Mr.main[LV_2] bingo! exp = 3 dime = 0 tw_cents = 5 hf_dollar = 0 ------------------------------------ obtained exp: 2 Mr.main[LV_2] bingo! exp = 5 dime = 1 tw_cents = 2 hf_dollar = 1 ------------------------------------ |