UVa 10970 Big Chocolate

  如果先横着切再竖着切,所需次数为(m-1)+(n-1)*m = mn-1; 如果先竖着切再横着切,所需次数为(n-1)+(m-1)*n = mn -1;所以结果为mn-1。代码如下:

View Code
1 #include <cstdio>
2 
3 int main()
4 {
5     int m, n;
6     while(scanf("%d%d", &m, &n) != EOF)
7         printf("%d\n", m*n-1);
8     return 0;
9 }

  上面代码耗时0.048s,下面的代码先计算结果保存到数组中,然后直接访问,耗时0.044s,也没快多少。

View Code
 1 #include <cstdio>
 2 
 3 int main()
 4 {
 5     int ans[301][301];
 6     for(int i = 1; i <= 300; i++)
 7         for(int j = 1; j <= 300; j++)
 8             ans[i][j] = i*j-1;
 9     int m, n;
10     while(scanf("%d%d", &m ,&n) != EOF)
11         printf("%d\n", ans[m][n]);
12     return 0;
13 }

  本来想写个程序先直接生成数组的,可是这样的话代码就太多了,九万个数。。。。。。

原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3014928.html