你这个属于暴力穷举,基本上不到100就要以秒计了,肯定超时
以前写过一个,主动产生丑数的算法,第1000个也就是1毫秒以内
算法的主要精神就是:后面的丑数是由前面的丑数*2,*3或者*5得来的,然后主动生成丑数序列,关于丑数算法具体细节原理,网上有很多文章,你可以自己搜索
#include <iostream>#include <ctime>
using namespace std
int min(int a, int b, int c)
{
int t = a < b ? a : b
return t <c ? t : c
}
int uglnum(int n)
{
int* unum = new int[n]
int un,i, i2, i3, i5
unum[0] = 1
i2 = i3 = i5 = 0
for (i = 1 i < n ++i)
{
un = min(unum[i2] * 2, unum[i3] * 3, unum[i5] * 5)
i2 += (un == unum[i2] * 2)
i3 += (un == unum[i3] * 3)
i5 += (un == unum[i5] * 5)
unum[i] = un
}
un = unum[n - 1]
delete[] unum
return un
}
int main()
{
int t,n
time_t ts
cin >> t
for (int i = 0 i < t ++i)
{
cin >> n
//ts = clock()
cout << uglnum(n) << endl
//ts = clock() - ts
//cout << ts<<"ms"<<endl
}
return 0
}
你的说法太片面了,京东这些都是用java写的,你觉得不好看吗?因为java只是负责后台的逻辑,一般就是处理的,好不好看是交给 前端,和ui设计的,所以java开发的程序丑,那是因为你还不懂 真的一个项目的构成,不仅是有java还有其他很多语言,所以说话不要太片面了!欢迎分享,转载请注明来源:内存溢出
评论列表(0条)