一时技痒 不用模拟第一印象的构造 通过三个观察得来的规律解决N^2个往返接力问题...
第一印象 我得到了和他一样的解法,就是用斜切片,每一层的 x-1和y+1 来控制顺序写数字的笔落在哪一个坐标。
但是根据一段时间的观察 我发现了几个规律 可以让我们不用模拟整个顺序的流
首先我们观察每一个切片
1 | 3 | 4 | 10 | 11 | 21 | 22 | 36 | 37 | 55 |
2 | 5 | 9 | 12 | 20 | 23 | 35 | 38 | 54 | 56 |
6 | 8 | 13 | 19 | 24 | 34 | 39 | 53 | 57 | 72 |
7 | 14 | 18 | 25 | 33 | 40 | 52 | 58 | 71 | 73 |
15 | 17 | 26 | 32 | 41 | 51 | 59 | 70 | 74 | 85 |
16 | 27 | 31 | 42 | 50 | 60 | 69 | 75 | 84 | 86 |
28 | 30 | 43 | 49 | 61 | 68 | 76 | 83 | 87 | 94 |
29 | 44 | 48 | 62 | 67 | 77 | 82 | 88 | 93 | 95 |
45 | 47 | 63 | 66 | 78 | 81 | 89 | 92 | 96 | 99 |
46 | 64 | 65 | 79 | 80 | 90 | 91 | 97 | 98 | 100 |
我们发现 在 n,n 坐标上的每一个数字都是这个切片对称 而且是平均值。 经过简单的计算 我们发现 1-n个切片的平均值 都是(n*n +1)/2
继续观察 又发现规律了。 这个矩阵对角对称的任意两个格子 正好是距离整个数列中心距离相等的两点 比如1和100 20和81 他们的和必为 max*max +1
这样我们只要能推算出某一行或者某一列的值 就可以通过上面两个特征来生成整个矩阵了哦
但是这个矩阵的行列太乱了 很难找出规律 这个时候就要考虑更简单的模型
我们看看非首尾接力的矩阵
1
1 2
3
1 2 4
3 5
6
1 2 4 7
3 5 8
6 9
10
有没有发现 粗体的数字 刚好是之前所有斜切片的总和?
那么 顺序矩阵和接力矩阵 有什么异同呢?
1 | 3 | 4 | 10 | 11 | 21 | 22 | 36 | 37 | 55 |
2 | 5 | 9 | 12 | 20 | 23 | 35 | 38 | 54 | 56 |
6 | 8 | 13 | 19 | 24 | 34 | 39 | 53 | 57 | 72 |
7 | 14 | 18 | 25 | 33 | 40 | 52 | 58 | 71 | 73 |
15 | 17 | 26 | 32 | 41 | 51 | 59 | 70 | 74 | 85 |
16 | 27 | 31 | 42 | 50 | 60 | 69 | 75 | 84 | 86 |
28 | 30 | 43 | 49 | 61 | 68 | 76 | 83 | 87 | 94 |
29 | 44 | 48 | 62 | 67 | 77 | 82 | 88 | 93 | 95 |
45 | 47 | 63 | 66 | 78 | 81 | 89 | 92 | 96 | 99 |
46 | 64 | 65 | 79 | 80 | 90 | 91 | 97 | 98 | 100 |
我们可以把接力矩阵当成隔行反转的顺序矩阵。这样我们就得到了一个在 x,y轴上摆动的参考值。 有了参考值 就可以根据前两点进行矩阵生成了
static void Main(string[] args)
{
var max = 11;
int [,] mx=new int [max,max];
var sideval = 0;
for (var seed = 0; seed < max; seed++)
{
int parevalue = (seed + 1) * (seed + 1) + 1;//规律1 中心轴对称两数之和等于层数平方+1
bool isOdd = seed % 2 == 1;
sideval = sideval + seed + 1; //规律2 两边至少有一个数字为 1+2+3+4++n
for (var fillseed = seed; fillseed >=0; fillseed--)
{
int row, col;
if (!isOdd)
{
row = fillseed;
col = seed - fillseed;
}
else
{
col = fillseed;
row = seed - fillseed;
}
//规律1 中心轴对称两数之和等于层数平方+1
mx[col, row] = sideval - fillseed;
mx[row, col] = parevalue - mx[col, row];
//规律3 中心对称的和为 max*max+1
mx[max - col - 1, max - row - 1] = max * max +1 - mx[col, row];
mx[max - row - 1, max - col - 1] = max * max + 1 - mx[row, col];
}
}
for (var x = 0; x < max; x++)
{
for (var y = 0; y < max; y++)
{
Console.Write(string.Format (" {0:d3}" ,mx[x, y]));
}
Console.WriteLine();
}
Console.Read();
}
解法有很多种 这种无疑是很生涩的。 作为面试题目的话 并不建议写这种考官很难理解的解法,会有小鞋
作为头脑风暴 防止老年痴呆 这个还是有一定意义的
转载于:https://www.cnblogs.com/waynebaby/archive/2009/07/25/1530653.html
一时技痒 不用模拟第一印象的构造 通过三个观察得来的规律解决N^2个往返接力问题...相关推荐
- “AI颜狗”来啦!第一眼看到照片,就能预测人们对你的第一印象
转自大数据文摘 世人皆是颜狗. 心理学家弗雷特说,以貌取人是人类的一种本能,这有可能是长期自然进化选择的结果. 因为人的大脑总是会选择对自己来说,是最不需要动脑思考的思维方式. 所以,人们就更倾向于通 ...
- 《Breaking The Walls》算法的第一印象和空间分割杂论
<Breaking The Walls>算法的第一印象和空间分割杂论 这个算法来自于国外的一篇论文<Breaking the Walls: Scene Partitioning an ...
- 网络研讨室_网络研讨会:Java 9的第一印象–构建可伸缩企业应用程序的新方法...
网络研讨室 在此网络研讨会上听我们对新Java版本的一些初步想法 关于Java 9的新版本,有很多宣传.将Java平台迁移到模块上,由Mark Reinhold领导的专门团队进行了近十年的艰苦工作. ...
- [免费网络研讨会] Java 11的第一印象
一年多以前,我们正焦急地等待新的模块化Java 9的到来.大约在同一时间,引入了一个新的发布周期,该周期将每6个月发布一次新版本,并提供长期支持(LTS).每3年发行一次(或每6个版本发行一次). 根 ...
- 网络研讨会:Java 9的第一印象–构建可伸缩企业应用程序的新方法
在此网络研讨会上听我们对新Java版本的一些初步想法 Java 9的新版本引起了很多炒作.在Mark Reinhold领导的专门团队的带领下,将Java平台迁移到模块花费了近十年的辛苦工作. 除了备受 ...
- gradle kotlin_我对Gradle Kotlin DSL的第一印象
gradle kotlin by Adam Arold 亚当·阿罗德(Adam Arold) 我对Gradle Kotlin DSL的第一印象 (My first impressions of Gra ...
- Qt第一印象——Qte与Qt
Qte即Qt/embedded,它是Qt的一个版本,要知道,它可不是其他版本(Qt/X11,Qt/mac)的子集,恰相反,Qte比他们包括更大的类库,可以说是他们的扩展. 刚开始,我对Qte很模糊,搞 ...
- SaaS营销网站剖析:SaaS主页,你给用户的第一印象
你的主页就是用户对你的SaaS业务的第一印象.好的主页能为你的网站.品牌和产品吸引客户--让用户进入注册流程的下一个环节. 大家都知道好的主页能促进转化率.但如果想要准确计算你的转化率,就需要对主页的 ...
- 第6章第12节:幻灯片的第一印象很重要:融入情感 [PowerPoint精美幻灯片实战教程]
能够留下美好的第一印象的幻灯片设计,不仅需要设计师的创造力,还需要融入设计师的感情. 和上一节相同,这张片子的主题也是情人节活动.幻灯片往往包含很多类型的元素,但是最能表达幻灯片作者情感的,莫过于图片 ...
最新文章
- 转赋值表达式解析的流程
- abap submit 的使用方法 不同情况
- Python爬虫! 单爬,批量爬,这都不是事!
- Tavas and Karafs 二分+结论
- PHP面向对象的魔术方法
- oracle 查看数据库启动时间同步,oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(4)...
- golang 编译 执行时候报错cannot declare name db.Query
- 慕课软件质量保证与测试(第七章.课后作业)
- 转行3D建模,C4D与3ds Max哪个更好入门就业
- 京东AI:用于视觉识别的上下文Transformer网络-Contextual Transformer Networks for Visual Recognition
- 句子迷仿写篇一:实现底部导航栏
- 数字人事系统 java_市国税局“数字人事”信息系统正式上线
- CurrentThread
- 架构师推荐书籍 一
- 解决WPS及office二次开发接口无法注册的问题
- centos 6.6 安装图形界面 X server gnome Xwindows
- TSP 问题的几种经典建模方式
- Ubuntu Frp内网穿透+Samba 445端口
- 远程计算机或设备将不接受连接,IE无法上网
- 阿龙的学习笔记---C++ 进阶知识(博客汇总)
热门文章
- php 去除中英文空格,php去除字符串首尾中英文空格程序_PHP教程
- linux内核层是什么,从用户层到内核层 - Linux内核中的信号机制_Linux编程_Linux公社-Linux系统门户网站...
- 计算机重装系统知识,电脑重装系统基础知识扫盲贴
- CentOS6.5 将安装光盘作为yum源
- MySQL 错误 #1055
- 【Oracle】【日期、时间】 date与数字时间戳互转
- 怎么可以用计算机弄出表白数字,怎么用数字表白 表白爱情数字大全
- spring cloud Hystrix
- PHP堆实现TopK算法实例,top-k 算法浅析
- java 采样_java 采集数据