米哈游第一题:
任何数字都可以由不同的3的幂加或减组成。
28 = 27 + 1
20 = 27 - 9 + 3 - 1
输入一个n
输出上述可以构成n的唯一字符串,从大到小排列
例如:
输入:
20
输出
27-9+3-1
这道题我a了90%,最后一个例子没过没搞明白为什么
首先思路是递归f(20) = 27 - f(7),然后过0%,说系统栈爆炸了,我直接慌了当时做了30min了,不能0啊;
然后改成迭代,用StringBuilder,过了90%,最后一个说是sb过长oom了,没理解。
然后尝试每次sout,又时间过长,可能sout占用时间过多;
最后尝试用BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));输出流来弄,结果告诉我说最后一个例子输出内容太多,不让我输出,离谱了。
代码附图,应该没错,离谱了。