首页 > 代码库 > 1416
1416
#include <stdio.h> #include <stdlib.h> int data[5]={};//代表有没有切割的数组 int input=12346;//输入的要被切割的数字 int output[5]={};//切完输出的数组成的数组 int a[5]={}; int count=0; int final; int target=50; int best[5]={};//用于存储最优的切割方法 int max=100; bool findpath = 0; //计算目标和最终和的差值 void handle(int final,int target){ int chazhi; chazhi = target - final; if(chazhi<max){ max = chazhi; } //把最优的切割方法存储起来 for(int i=0;i<5;i++){ best[i] = data[i]; } } void func(int step){ if(step==5) {//先假设数字有五位 //计算 findpath =1; //1==12345/(data[0]*10*(位数-1)) for(int i=4;i>0;i--){ if(data[i]==1)//代表需要切割 { int num=10; for(int j=0;j<i;j++){ num =num*10; } a[count] = input%num;//余数就是切割后面的数 input = input/num; count ++; } } for(int k=0;k<count;k++) { final += a[k]; } handle(final,target); return; } data[step] = 0; func(step+1); data[step] = 1; func(step+1); } int main(){ func(0); printf("%d",findpath); for(int i=0;i<5;i++){ printf("%d\n",best[i]); } system("pause"); }
1416
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。