有没有什么算法可以让这个程序运行的效率再高点?
#include <iostream.h>
int main()
{ int a[70000],b[40000],i=0,x=0,y=0,p,c[100000],j=0,k=1;
for(i=0;i <=70000;i++)
{x+=3;
a[i]=x;
if(x==210000)break;
}
for(i=0;i <=40000;i++)
{y+=5;
b[i]=y;
if(y==200000)break;
}
while(k <=100000)
{ i=0,j=0,k=0;
if(a[i] <=b[j])
{
c[k]=a[i];
i++;
k++;
}
else
{
c[k]=b[j];
j++;
k++;
}
}
cin> > p;
cout < <c[p-1] < <endl;
return 0;
}
就这个程序,现在运行的太慢了,可能是循环次数多了.
有没有更好的算法?
[解决办法]
你的这个贴子里我已经给了解答:
http://community.csdn.net/Expert/TopicView3.asp?id=5451832
int n35(int n)
{
assert( 1 <= n && n <= 100000 );
static int d[] = {0, 3, 5, 6, 9, 10, 12};
return n/7*15 + d[n%7];
}
返回第nth个数。