您的位置:首页 > 其它

杭电Acm-1046解题心得

2012-01-12 23:09 253 查看
这道题目,我刚看的时候,就觉得是DFS,结果用DFS解决的时候,总是TLE。后来百度了一下,才发现,被出题者给忽悠了。这道题目其实并不是DFS,而且寻找简单的规律。规律非常简单,我在思考的过程中,也有想过,只是不敢相信,会如此简单。规律如下:

对于m和n至少有一个是偶数的情况,结果就为m*n

对于m和n都为奇数的情况,结果为:m*n + 0.41(0.41 = sqrt(1 + 1)  - 1)

这样,代码实现,才是最最简单的:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {

public static void main(String[] args) throws IOException {

StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int cases = (int)in.nval;
int index = 1;
while (index <= cases) {
in.nextToken();
int m = (int)in.nval;
in.nextToken();
int n = (int)in.nval;
out.println("Scenario #" + index++ + ":");
if (1 == m % 2 && 1 == n % 2)
out.println(m * n + 0.41);
else
out.println(m * n + ".00");
out.println();
}
out.flush();
out.close();
}
}


这个题目,并不难,但要求我们能够善于发现规律。不能一味的陷入一下常规的解决问题的思路中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: