- 浏览: 79042 次
- 性别:
- 来自: 拜月神教
最新评论
-
huangfenghit:
你绝对的大牛~
答复: 阿里巴巴面试感言 -
liuxuejin:
好!慢慢下载来看看
区间树 -
xiaobian:
看不懂,怎么知道是讲的好呢 ?
数据挖掘 决策树ID3算法原理 -
longay00:
不错,很牛,不过没有原理与实验很难相信它的正确性。从代码上看, ...
决策树C4.5算法 -
yangguo:
用我的study方法就可以了。
答复: java最优算法讨论
在8×8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间向8个方向移动,请你计算n个骑士的最早聚会地点和要走多少天,要求尽早聚会,且n个人走的总步数最少,先到聚会地点的骑士可以不再移动等待其他的骑士。
从键盘输入n(0<n<=64),然后一次输入n个其实的初始位置xi,yi(0<=xi,y<=7)。屏幕输出以空格分割的三个数,分别为聚会的点(x,y) 以及要走的天数。
○ ○
○ ○
◎
○ ○
○ ○
骑士走法(中间为起始位置,空为走到位置)
从键盘输入n(0<n<=64),然后一次输入n个其实的初始位置xi,yi(0<=xi,y<=7)。屏幕输出以空格分割的三个数,分别为聚会的点(x,y) 以及要走的天数。
○ ○
○ ○
◎
○ ○
○ ○
骑士走法(中间为起始位置,空为走到位置)
package convex; public class Point { public int x, y; public Point(int x, int y) { if (x > 7 || y > 7) { throw new RuntimeException("out of matrix"); } this.x = x; this.y = y; } public String toString() { return "x=" + x + ",y=" + y; } }
package convex; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; import convex.Point; public class Algo { private boolean[][] flg = new boolean[8][8]; private int[][] shortPath = new int[8][8]; //最短距离矩阵 public int[][] distanceSq(Point p1) { djkst(p1); return shortPath; } //BFS private void djkst(Point p1) { Point[] queue = new Point[64]; flg[p1.x][p1.y] = true; queue[0] = p1; int j=0; int queueSize = 1; while (j < queue.length) { Point temp = queue[j]; Point[] list = getList(temp); for(int i=0;i < list.length;i++) { if(list[i] != null) { Point w = list[i]; if (!flg[w.x][w.y]) { shortPath[w.x][w.y] = shortPath[temp.x][temp.y] + 1; queue[queueSize++] = w; flg[w.x][w.y] = true; } } } j++; } } //可行步数集 private static Point[] getList(Point point) { Point[] list = new Point[8]; int length = 0; if (point.x + 2 <= 7 && point.y + 1 <= 7) { list[length++] = new Point(point.x + 2, point.y + 1); } if (point.x - 2 >= 0 && point.y - 1 >= 0) { list[length++] = new Point(point.x - 2, point.y - 1); } if (point.x + 1 <= 7 && point.y + 2 <= 7) { list[length++] = new Point(point.x + 1, point.y + 2); } if (point.x - 1 >= 0 && point.y - 2 >= 0) { list[length++] = new Point(point.x - 1, point.y - 2); } if (point.x + 2 <= 7 && point.y - 1 >= 0) { list[length++] = new Point(point.x + 2, point.y - 1); } if (point.x - 2 >= 0 && point.y + 1 <= 7) { list[length++] = new Point(point.x - 2, point.y + 1); } if (point.x + 1 <= 7 && point.y - 2 >= 0) { list[length++] = new Point(point.x + 1, point.y - 2); } if (point.x - 1 >= 0 && point.y + 2 <= 7) { list[length++] = new Point(point.x - 1, point.y + 2); } return list; } public static int[] method(Point[] points, int i,int j,Object[] pointList) { int maxDay = 0; int distance = 0; for(int k=0;k<pointList.length;k++) { int day = ((int[][])pointList[k])[i][j]; distance += day; if(maxDay<day) { maxDay = day; } } return new int[]{maxDay,distance}; } public static void main(String[] args) throws IOException { //数据输入 //数据输入格式:第一个数字是骑士n,第2,3个数字是第一个骑士的坐标,依次类推。 //每个数字之间以空格区分 BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); String line = stdin.readLine(); StringTokenizer st = new StringTokenizer(line); int pointLength = Integer.parseInt(st.nextToken()); Point[] points = new Point[pointLength]; for(int i=0;i<points.length;i++) { int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); points[i] = new Point(x,y); } Object[] pointList = new Object[points.length]; for (int j = 0; j < points.length; j++) { pointList[j] = new Algo().distanceSq(points[j]); } int minDay = 999999999; int minDistance = 999999999; for(int i=0;i<7;i++) { for(int j=0;j<7;j++) { int[] result = Algo.method(points, i,j,pointList); //找最短天数,最短天数相同,找最短距离 if (minDay > result[0]) { minDay = result[0]; minDistance = result[1]; } else if(minDay == result[0]) { if(minDistance > result[1]) { minDistance = result[1]; } } } } for(int i=0;i<7;i++) { for(int j=0;j<7;j++) { int[] result = Algo.method(points, i,j,pointList); if(minDay == result[0] && minDistance == result[1]) { System.out.println(i+" " + j +" "+ minDay); } } } } }
发表评论
-
庞果英雄会 覆盖数字
2013-11-14 15:13 856庞果覆盖数字原题如下 给定整数区间[a,b]和整数区间[x, ... -
2-3 tree
2013-10-09 17:10 772package com.leon.cc; imp ... -
编译原理生成LL1预测分析表
2013-08-11 20:47 5850package com.leon; impo ... -
应用倍增法后缀数组以及RMQ求解N个字符串最长公共子串问题
2011-11-30 16:35 1464/** * @see IOI2009国家集训队论文《后 ... -
谷哥的KOF连招问题
2010-10-09 14:38 1533传说问题是这样的 玩过KOF(拳皇)的人都知道,玩的时候会连招 ... -
KOF
2010-10-09 00:13 0package org.struct.trietree; ... -
ACM/ICPC HDU 1195
2010-09-06 10:37 1897本年度还有8篇博客需要完成 开篇前附加一个看完《盗梦空间》的我 ... -
答复: 阿里巴巴面试感言
2009-10-09 22:27 2185好吧,我承认我闲的蛋疼 问题:3000万条的记录取最大的前50 ... -
正向最大匹配改进算法
2009-05-26 22:11 5894AD.: 2年J2EE经验,熟悉常用数据结构算法,熟悉常 ... -
决策树C4.5算法
2009-05-19 02:05 5259数据挖掘中决策树C4.5预测算法实现(半成品,还要写规则后 ... -
区间树
2008-07-18 15:47 2192package acmcode; /** * ... -
红黑树初版
2008-07-16 17:20 1610package acmcode; /** * R ... -
四则运算的中缀转后缀,逆波兰表达式求值
2008-04-23 23:10 9087首先描述问题 给定一 ... -
最大0,1子矩阵
2008-04-20 21:16 6087首先描述一下问题 /** * * 时间限制(普 ... -
数据挖掘 决策树ID3算法原理
2008-04-11 22:24 11414上一篇博客写了ID3算法的简单实现 这一篇讲讲ID3的原理 写 ... -
决策树ID3算法
2008-04-01 22:18 7607算了,还是自己修正一个BUG.... package gr ... -
ext2.0 的XMLWriter
2008-02-20 21:04 1285做ext相关的一个example项目,把我们的客户端移植成ex ... -
树与哈夫曼树
2008-02-20 20:50 1594package tree; public ... -
LCS与图算法
2008-02-20 20:46 1236求两个字符串最长公共子串的问题。大体解法是用一个矩阵来记录两个 ...
相关推荐
9期的算法擂台栏目聚焦于“骑士聚会”问题,这是一个涉及算法设计与实现的经典挑战。这个挑战源自于数学游戏,通常与图论或组合优化相关,旨在模拟中世纪骑士在棋盘上的排列方式。 "骑士聚会"问题来源于国际象棋,...
《程序员编程艺术:面试和算法心得》是一本深入探讨编程面试和算法的书籍,主要针对的是准备面试的程序员,特别是那些关注技术深度和广度,以及如何在面试中展现出自己能力的开发者。这本书可能涵盖了从基础数据结构...
• 第六章 海量数据处理 o 6.0 本章导读 o 6.1 关联式容器 o 6.2 分而治之 o 6.3 simhash 算法 o 6.4 外排序 o 6.5 MapReduce o 6.6 多层划分 o 6.7 Bitmap o 6.8 Bloom filter o 6.9 Trie 树 o 6.10 数据库 o 6.11 ...
程序员模板2:软件功能设计报告.doc
视频课程下载——程序员软技能:代码之外的生存指南
《程序员算法趣题——随书源码》是一个与算法相关的学习资源,包含了增井敏克著作《程序员算法趣题》中的实例代码。增井敏克是算法领域知名的专家,他的书籍通常深入浅出,旨在帮助程序员提升算法思维和解决实际问题...
精品--一款漂亮大气的程序员简历模板:适用于PHP程序员、iOS程序员、Android程序员、Web前端程序员、Ja
在程序员的面试和笔试过程中,数据结构与算法是不可或缺的核心部分。这些知识不仅考察了候选人的编程基础,更深入地体现了他们对问题解决能力和效率优化的理解。本资源"程序员算法面试笔试大全data structures and ...
在计算机编程领域,面试是检验一个程序员技术能力的重要环节。本教程旨在帮助程序员系统地准备面试,特别是算法与数据结构部分,这是面试中的核心内容。
《程序员代码面试指南:IT名企算法与数据结构题目最优解-代码》是一部专为准备IT企业面试的程序员量身定制的指南。本书的核心内容围绕算法和数据结构展开,通过Java语言实现,旨在帮助读者掌握解决常见面试问题的...
《程序员的算法趣题》是一本专门为IT从业者和有志于进入这个领域的学习者准备的算法书籍。它通过一系列有趣且富有挑战性的题目,旨在帮助读者深入理解和掌握计算机科学中的核心算法,提升解决实际问题的能力。这本书...
算法精解 c语言 中文版,适合学习算法和程序员 算法精解:C语言描述 中文版 pdf
"程序员的数学4:图论入门" 本书《程序员的数学4:图论入门》是一本面向程序员群体的数学读物,旨在介绍图论的基本概念和应用。图论是一门研究图形和结构的学科,其中节点和边分别表示对象和它们之间的关系。在编程...
Java程序员在面试中可能会遇到各种类型的智力测试,这些测试旨在评估候选人的逻辑思维、问题解决能力和数学推理能力。以下是一些解决智力测试的关键方法: 1. **排除法**:通过排除不相关的信息,缩小问题的可能...
项目标签:[程序员文化] [生活指南] 推荐理由:一份程序员做饭指南,提供了极其详尽的菜谱。这份指南以程序员的语言和思维方式呈现,消除了模糊的量词和难以理解的操作。从主食到甜品,菜单应有尽有,为程序员提供了...
《程序员面试算法大全》是一本面向准备面试的程序员的重要参考资料,涵盖了广泛的算法和数据结构知识。这本书通过详细的代码实现和解题思路,帮助读者提升在面试中的表现,从而提高获得理想职位的机会。以下是对其中...
适合学习算法和程序员。算法精解:C语言描述(中文版).pdf
"程序员_算法:프로그래머스알고리즘"这一主题旨在探讨和学习如何运用算法来解决实际编程问题,特别是通过Python语言实现。 首先,Python语言因其简洁明了的语法而深受程序员喜爱,同时也是学习算法的理想选择。...
在IT行业中,算法是程序员的核心技能之一,它们是解决问题和设计高效程序的基础。"程序员实用算法.zip"这个压缩包很可能包含了一系列与编程相关的算法实现、解释或案例,旨在帮助程序员提升这方面的能力。以下是对...