Tag - 枚举

枚举    2017-11-03 11:00:31    291    0    0

前方预警

只有有实力和编程非常熟练的学生才可以考虑用这个方法,熟练度一般的,不建议使用,因为你没有多余的时间写这个。

原理

利用windows的输出输入重定向功能(即改变输入输出的设备),结合windows的fc(文件比较命令),结合数据生成器,对程序进行对拍,一脸懵逼的看下图。

也就是说,你还要额外的多写2个程序。知道为什么我说只有非常熟练的人才能使用这个方法了吧。

举个栗子

矩形

【问题描述】
我们都知道,我们生活在矩阵中,矩阵被划分为N行×N列。一个整数被写入矩阵的每个NxN单元格中。为了离开矩阵,我们必须找到矩阵中包含的最美丽的正方形(正方形的子矩阵)。
如果我们用A来表示一个正方形的主对角线上的所有整数之和,用B来表示副角线上的所有整数之和,那么这个正方形的美就是A-B
注意:正方形的主对角线是从左上角到右下角的对角线。
【输入】
第一行一个正整数N(2≤N≤400),矩阵的大小。
以下N行每个包含[-1000,1000]范围内的N个整数,矩阵的元素。
【输出】
一行,一个整数,矩阵中找到的最美的正方形,即A-B最大

样例输入

【输入样例1】
2
1 -2
4 5
【输入样例2】
3
1 2 3
4 5 6
7 8 9
【输入样例3】
3
-3 4 5
7 9 -2
1 0 -6

样例输出

【输出样例1】
4
【输出样例2】
0
【输出样例3】
5


【纯暴力枚举】
不管如何,一定要学会纯暴力写法,简单粗暴,拿分爽。
【参考程序及解释】

  1. var
  2. a:array[1..400,1..400] of longint;
  3. i,j,k,z,zx,zy,yx,yy,n,sa,sb,max:longint;
  4. function min(x,y:longint):longint;
  5. begin
  6. if x<y then exit(x)
  7. else exit(y);
  8. end;
  9. begin
  10. readln(n);
  11. for i:=1 to n do
  12. for j:=1 to n do
  13. read(a[i,j]);
  14. max:=-maxlongint