POJ--1416

#include <stdio.h>
#include <stdlib.h> int data[]={};//代表有没有切割的数组
int input=;//输入的要被切割的数字
int output[]={};//切完输出的数组成的数组
int a[]={};
int count=;
int final;
int target=;
int best[]={};//用于存储最优的切割方法
int max=;
bool findpath = ; //计算目标和最终和的差值
void handle(int final,int target){
int chazhi;
chazhi = target - final;
if(chazhi<max){
max = chazhi;
}
//把最优的切割方法存储起来
for(int i=;i<;i++){
best[i] = data[i];
}
}
void func(int step){
if(step==) {//先假设数字有五位
//计算
findpath =;
//1==12345/(data[0]*10*(位数-1))
for(int i=;i>;i--){
if(data[i]==)//代表需要切割
{
int num=;
for(int j=;j<i;j++){
num =num*;
}
a[count] = input%num;//余数就是切割后面的数
input = input/num;
count ++;
}
} for(int k=;k<count;k++)
{
final += a[k];
}
handle(final,target);
return;
}
data[step] = ;
func(step+); data[step] = ;
func(step+); }
int main(){
func();
printf("%d",findpath);
for(int i=;i<;i++){
printf("%d\n",best[i]);
}
system("pause");
}
上一篇:Java网页数据采集器[续篇-远程操作]【转载】


下一篇:Spring security csrf实现前端纯html+ajax