贪心算法

everythingisyou 2020-06-16 12:21:35
(1)Lct准备研究一个名为“Link - Cut - Tree”的算法,他认为这个算法很美,所以他每天都说“lcttxdy”。有一天,他挑了一个n∗m棋盘,但这让他很奇怪的是棋盘上的每一个棋子都有一个小字母,他想知道有多少个大小写字母连在一起可以构成‘lcttxdy’。(注意:只有当一个字母在上、下、左、右、左上、左下、右上和右下时,我们称这两个字母是连在一起的) 输入 第一行包含一个整数t(1≤t≤100)——输入中的测试用例的数量。 每个测试用例的第一行包含两个整数n和m——棋盘格的长度和宽度(1≤n,m≤100) 接下来的n行每一行包含m个字母,它们都是英文小写字母 输出 对于每种情况,输出两行: 在第一行输出“YES”或“NO”——查找或不查找“lcttxdy” 在第二行输出“lcttxdy”的数目。如果没有找到打印-1 求代码
...全文
265 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
YangjulongTrue 2020-06-30
  • 打赏
  • 举报
回复
public static void main(String[] args) {	
F(10,10);
}
//n m 棋盘
public static void F(int n,int m) {
char[][] charset=new char[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
charset[i][j]= (char)(Math.random()*26+97);
System.out.print(charset[i][j]);
}
System.out.println();

}

select(new char[][] {new char[] {'l','c','t','t','x','d','y'}});


}
static LinkedList<String> string1=new LinkedList<String>();
//1 棋盘 x y a当前下标 cha 查找的字符
public static void Seach(char[][] qi,int x,int y,int a,char[] cha) {
if(a==cha.length-1) {
System.out.println("成功。。。。。。");
string1.forEach(e->System.out.println(e));
System.exit(0);
return ;
}
String ok=isok(qi,x,y,cha[a]);
if(ok!=null) {
String [] s=ok.split(",");
string1.add(ok);
Seach(qi,Integer.parseInt(s[0]),Integer.parseInt(s[1]),a+1,cha);
string1.removeLast();
}


}
public static void select(char[][] qi) {
for (int i = 0; i < qi.length; i++) {
for (int j = 0; j < qi[0].length; j++) {
Seach(qi,i,j,0,new char[] {'l','c','t','t','x','d','y'});
}
}
}
//查询 并返回 坐标
public static String isok(char[][] qi,int x,int y,char a) {

if(ishh(qi,x+1,y,a)) return (x+1)+","+y;
if(ishh(qi,x-1,y,a)) return (x-1)+","+y;
if(ishh(qi,x-1,y+1,a)) return (x-1)+","+(y+1);
if(ishh(qi,x-1,y-1,a)) return (x-1)+","+(y-1);
if(ishh(qi,x+1,y+1,a)) return (x+1)+","+(y+1);
if(ishh(qi,x+1,y-1,a)) return (x+1)+","+(y-1);
if(ishh(qi,x,y+1,a)) return x+","+(y+1);
if(ishh(qi,x,y-1,a)) return x+","+(y-1);



return null;
}
public static boolean ishh(char [][]qi,int x,int y,char a) {
try {
return qi[x][y]==a;
} catch (Exception e) {
return false;
}

}
select 改成上面随机生成的就行了 不过看脸 哎。。。。
1.算法是程序的灵魂,优秀的程序在对海量数据处理时,依然保持高速计算,就需要高效的数据结构和算法支撑。2.网上数据结构和算法的课程不少,但存在两个问题:1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了2)说是讲数据结构和算法,但大多是挂羊头卖狗肉,算法讲的很少。 本课程针对上述问题,有针对性的进行了升级 3)授课方式采用图解+算法游戏的方式,让课程生动有趣好理解 4)系统全面的讲解了数据结构和算法, 除常用数据结构和算法外,还包括程序员常用10大算法:二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、马踏棋盘算法。可以解决面试遇到的最短路径、最小生成树、最小连通图、动态规划等问题及衍生出的面试题,让你秒杀其他面试小伙伴3.如果你不想永远都是代码工人,就需要花时间来研究下数据结构和算法。教程内容:本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找、斐波那契查找、散列、哈希表、二叉树、二叉树与数组转换、二叉排序树(BST)、AVL树、线索二叉树、赫夫曼树、赫夫曼编码、多路查找树(B树B+树和B*树)、图、图的DFS算法和BFS、程序员常用10大算法、二分查找算法(非递归)、分治算法、动态规划算法、KMP算法、贪心算法、普里姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法马踏棋盘算法。学习目标:通过学习,学员能掌握主流数据结构和算法的实现机制,开阔编程思路,提高优化程序的能力。
  在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 《算法导论(原书第3版)》选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在it专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。    第3版的主要变化:    新增了van emde boas树和多线程算法,并且将矩阵基础移至附录。    修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。    移除两章很少讲授的内容:二项堆和排序网络。    修订了动态规划和贪心算法相关内容。    流网络相关材料现在基于边上的全部流。    由于关于矩阵基础和strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。    修改了对knuth-morris-pratt字符串匹配算法的讨论。    新增100道练习和28道思考题,还更新并补充了参考文献。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧