发布网友 发布时间:2022-05-01 12:46
共2个回答
热心网友 时间:2023-10-13 02:52
算法:4x+3y+z=36x+y+z=36x,y,z属于小于36的正整数由于36个人搬,所以x不会大于9,y不会大于12,z不会大于36所以直到测试完三个条件才算考虑完毕所有情况为了简化思路,将三个条件分开首先固定x,如果x不大于9则开始循环 固定y不断计算z的值,若y值大于13则将x值增加并继续循环 若z大于36则将y值增加并且继续循环,每测试完一组值就记录在一个结构体里面每记录完一个结构体就自增计数器并且将结构体放到最后计算完毕之后返回结构体代码:#include <stdio.h>typedef struct cdt{ int x,y,z,*num; struct cdt next;}*adt;adt fun(adt link){ adt lk=link; int x,y,z; for(x=1;x!=10;++x){ for(y=1;y!=13;++y){ for(z=1;z!=37;++z){ if((36-4x-3y)>=1){ if((z==(36-4x-3y))&&(z==(36-x-y))){ lk->next =(adt)malloc(sizeof(struct cdt)); lk->x=x,lk->y=y,lk->z=z,*(lk->num)++; lk=lk->next; } } } } } lk->next=null; return link;}int main(void){ adt link=(adt)malloc(sizeof(stuct cdt)); link->num=(int *)malloc(sizeof(int)); *link->num=0; link->next=null; link=fun(link); //自己出来结果。}热心网友 时间:2023-10-13 02:52
#include <stdio.h>