雌雄同体自交:【悬赏20分】谁帮我优化下C代码,我觉的太占CPU了!

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 18:52:48
#include <windows.h>
#include <stdio.h>
int main()
{ FILE *fp;
int ii=20085;
int a,b,c,d,e,f,g,h,i,j;
fp=fopen("pass.txt","w+");
for (a=0;a<=9;a++)
{
for (b=0;b<=9;b++)
{
for (c=0;c<=9;c++)
{
for (d=0;d<=9;d++)
{
for (e=0;e<=9;e++)
{
for (f=0;f<=9;f++)
{
for (g=0;g<=9;g++)
{
for (h=0;h<=9;h++)
{
for (i=0;i<=9;i++)
{
for (j=0;j<=9;j++)

{
if((a!=b && a!=c && a!=d && a!=e && a!=f && a!=g && a!=h && a!=i && a!=j) &&
(b!=c && b!=d && b!=e && b!=f && b!=g && b!=h && b!=i && b!=j) &&
(c!=d && c!=e && c!=f && c!=g && c!=h && c!=i && c!=j) &&
(d!=e && d!=f && d!=g && d!=h && d!=i && d!=j) &&
(e!=f && e!=g && e!=h && e!=i && e!=j) &&
(f!=g && f!=h && f!=i && f!=j) &&
(g!=h && g!=i && g!=j) &&
(h!=i && h!=j) &&
i!=j )
{
printf("%d %d %d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h,i,j);
// getch();
if (((a*10000) + (b*1000) + (c*100) + (d*10) + e +ii) == ((f*10000) + (g*1000) + (h*100) + (i*10) + j))
{
fprintf(fp,"%d %d %d %d %d %d %d %d %d %d\n",a,b,c,d,e,f,g,h,i,j);

//getch();
printf("A=%d\n%d\n",a,j);
}}
}}}}}}}}}}
fclose(fp);
getch();
}
---------------------------------------------
我电脑用了下,占了%40!
呵呵 不好意思...
--------------(这样写 不知道行不行了).
要求完成下面的表达式
a b c d e
+2 0 0 8 5
------------
f g h i j
要求abcdefghij分别表示从0到9的一位数字,而且不允许重复使得上面的加法表达式成立.最后将所有满足条件的数写到文件Pass.txt

c+0那列要向前进位,说明c是9,h是0啦。(数学方法。)

我写C++写惯了,不知道下面的有错误没有,如果哪里不对,就改一下吧。
(我上来就写了个//,想一想觉得不对劲,就改成/**/了)
我改写的代码,应该会快一点吧,至少看起来会清晰一点。

/*祝我16岁生日快乐(刚过完)。用记事本写的,没调试,不知有Bug没有.没写注释:-) - C*LF*/

#include <windows.h>
#include <stdio.h>

short x[8];

bool check(void)
{
short nMax=7;
while(nMax>0)
{
for(short i=nMax-1;i>=0;i--)
{
if(x[i]==x[nMax]) return false;
}
nMax--;
}
return true;
}

bool getnext(short n)
{
if(n == -1) return false;
x[n]++;
if(x[n]==9)
{
x[n]=0;
return getnext(n-1);
}

return true;
}

int main()
{
FILE *fp;
fp=fopen("pass.txt","w+");

for(short i=0;i<8;i++) { x[i]=i+1; } /*初始化数组*/

do
{
if(!check()) continue;
if(((x[0]*10+x[1] + 20)==(x[4]*10 + x[5]))&&((x[2]*10+x[3] + 85)==(x[6]*10 + x[7]) + 100))
{
fprintf(fp,"%d %d 9 %d %d %d %d 0 %d %d\n",x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7]);
printf("%d %d 9 %d %d %d %d 0 %d %d\tOK!\n",x[1],x[2],x[3],x[4],x[5],x[6],x[7]);
}
else
{
printf("%d %d 9 %d %d %d %d 0 %d %d\tFail!\n",x[1],x[2],x[3],x[4],x[5],x[6],x[7]); /*我也刷屏 */
}
}
while(getnext(7));

fclose(fp);
getch();
}

觉得如果用位操作的话可能会快点并且
代码就不写了,

先把你的题目写出来吧!

你把题目写出来,看你这代码太难看清楚要做什么