讨论 / 怎样跑进400ms? 现在停留在470ms.
Lemontree 2010-06-07 05:54:00
点我顶贴 收藏 删除
#include<stdio.h>

#include<stdlib.h>

int list[4]={1,2,3,4};

int c[5];

float t[5][5][60000];//,sub[5][5][30000];

int main()

{

//freopen("out.txt","w",stdout);

int i,j,a,b,k,last,d;

float temp;

for(i=1;i<=4;i++)

{

scanf("%c",&c[i]);

getchar();

if(c[i]<'A'||c[i]>'Z')

{

c[i]-='0';

}

else

switch(c[i])

{

case 'A':c[i]=1;break;

case 'J':c[i]=11;break;

case 'Q':c[i]=12;break;

case 'K':c[i]=13;break;

}

}

/* for(i=1;i<=4;i++)printf("%d",c[i]);

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

{

for(j=0;j< 4;j++)

{

printf("%d,",list[i][j]);

}

printf("\n");

}*/

for(j=0;j<4;j++){t[1][j+1][1]=c[list[j]]; t[1][j+1][0]=1;}

for(j=2;j<=4;j++)

{

for(k=1;k<=5-j;k++)

{

last=0;

for(d=j-1;d>0;d--)

{

for(a=1;a<=t[d][k][0];a++)

{

for(b=1;b<=t[j-d][d+k][0];b++)

{

temp=t[d][k][a]+t[j-d][k+d][b];

t[j][k][++last]=temp;

temp=t[d][k][a]-t[j-d][k+d][b];

t[j][k][++last]=temp;

temp=t[d][k][a]*t[j-d][k+d][b];

t[j][k][++last]=temp;

temp=t[d][k][a]/t[j-d][k+d][b];

t[j][k][++last]=temp;

temp=t[j-d][k+d][b]/t[d][k][a];

t[j][k][++last]=temp;

temp=t[j-d][k+d][b]-t[d][k][a];

t[j][k][++last]=temp;

}

}

}

t[j][k][0]=last;

}

}

for(j=1;j<=t[4][1][0];j++)

{

if(t[4][1][j]<=24.1 && t[4][1][j]>23.9)

{

printf("yes");

return 0;

}

}

printf("no");

//system("pause");

return 0;

}

查看更多回复
提交回复