您的当前位置:首页正文

定义控制台应用程序的入口点代码

来源:个人技术集锦


// JobSchedule.cpp : 定义控制台应用程序的入口点。

//

//t=T-sum(ai)=sum(bi)+sum(si)-sum(ai),as sum(si)>=0,so t>=sum(bi)-sum(ai); as sum(si)#include \"stdafx.h\"

void MinSchTime(int *a,int *b,int n,int *T,int m,int t,int *solution)

{

unsigned int s=0,max=1;

int i=0;

for(;ifor(i=0;ifor(i=0;ifor(i=1;i<=n;i++)

{

for(s=1;s{

int len=0;

for(int tmp=s;tmp>0;tmp/=2)

if(tmp%2)len++;

if(len!=i){

s++;

continue;

}

////////////////////////////////

for(int l=0;l{//T(S,l)

unsigned int s2=s,minum=0xffffffff,bestj=-1;

for(int j=0;s2>0;j++)

{

if(s2%2)//第j位为1

{

int sub=1;

for(int k=1;k<=j;k++)sub*=2;

int s3=s-sub;

int ss=l-a[j];

unsigned int tt=a[j]+T[s3*t+b[j]+(l-a[j]>0?l-a[j]:0)];

if(minum>tt)

{

minum=tt;

bestj=j;

}

}

s2/=2;

}

T[s*t+l]=minum;

solution[(i-1)*t+l]=bestj;

}

s++;

}

}

}

int c(int m,int n)

{

int t=1,i=1;

for(;i<=n;i++)t*=i;

int b1=1,b2=1;

for(i=1;i<=m;i++)b1*=i;

for(i=1;i<=n-m;i++)b2*=i;

return t/(b1*b2);

}

void PrintSolution(unsigned int s,int l,int t,int * a,int *b,int *solution)

{

}

int _tmain(int argc, _TCHAR* argv[])

{

int count=0;

printf(\"Please input job count:\");

scanf(\"%d\

int *a=new int[count*2];

int *b=a+count;

memset(a,0,count*2);

printf(\"Please input all a and b:\\n\");

int i=0;

for(;i{

printf(\"Job%d:\

scanf(\"%d\

scanf(\"%d\

}

int m=0,t=0;

for(i=0;i<=count;i++)

m+=c(i,count);

for(i=0;iint *T=new int[m*t];

int *solution=new int[count*t];

MinSchTime(a,b,count,T,m,t,solution);

printf(\"The min time is:%d\\n\

return 0;

}

因篇幅问题不能全部显示,请点此查看更多更全内容