JAVA算法刷题---DAY 4 Fib数列 单词搜索_JAVA 杨辉三角

发布时间:2026/6/11 5:32:00

JAVA算法刷题---DAY 4 Fib数列 单词搜索_JAVA 杨辉三角 本系列可作为JAVAEE初阶学习系列的笔记文中提到的一些练习的代码小编会将代码复制下来大家复制下来就可以练习了方便大家学习。点赞关注不迷路您的点赞、关注和收藏是对小编最大的支持和鼓励系列文章目录JAVA初阶---------已更完JAVA数据结构---------已更完数据库初阶----------已更完JAVA EE初阶---------正在更新JAVA算法刷题---DAY 0 JAVA的快速IOJAVA算法刷题---DAY1 数字统计、两个数组的交集、点击消除JAVA算法刷题---DAY2 牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离JAVA算法刷题---DAY 3 简写单词 dd爱框框 除2JAVA算法刷题---DAY 4 Fib数列 单词搜索_JAVA 杨辉三角目录目录系列文章目录目录前言1.Fibonacci数列描述输入描述输出描述示例1总体三步走2.单词搜索题目描述输入返回值输入返回值输入返回值3.杨辉三角描述输入描述输出描述示例1示例2分步完整思路步骤 1初始化步骤 2逐行递推填充三角核心易错点步骤 3格式化打印满足域宽 5 要求总结前言小编作为新晋码农一枚会定期整理一些写的比较好的代码作为自己的学习笔记会试着做一下批注和补充如转载或者参考他人文献会标明出处非商用如有侵权会删改欢迎大家斧正和讨论今天的练习使用快速IO 详情可以查看 JAVA算法刷题---DAY 0 JAVA的快速IO1.Fibonacci数列题目链接Fibonacci数列_牛客题霸_牛客网描述Fibonacci数列是这样定义的F[0] 0F[1] 1for each i ≥ 2: F[i] F[i-1] F[i-2]因此Fibonacci数列就形如0, 1, 1, 2, 3, 5, 8, 13, ...在Fibonacci数列中的数我们称为Fibonacci数。给你一个N你想让其变为一个Fibonacci数每一步你可以把当前数字X变为X-1或者X1现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述输入为一个正整数N(1 ≤ N ≤ 1,000,000)输出描述输出一个最小的步数变为Fibonacci数示例1输入15复制输出2总体三步走生成斐波那契数列找到 x 落在两个斐波那契数中间b x ≤ c计算 x 到左边 b 的距离和x 到右边 c 的距离输出最小的那个import java.util.*; import java.io.*; public class Main{ public static PrintWriter outnew PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); public static Read innew Read(); public static void main(String[] args) throws IOException{ int xin.nextInt(); int a0,b1,c1; while(xc){ ab; bc; cab; } out.println(Math.min((c-x),(x-b))); out.close(); } } class Read{ StringTokenizer stnew StringTokenizer( ); BufferedReader bfnew BufferedReader(new InputStreamReader(System.in)); String next() throws IOException{ while(!st.hasMoreTokens()){ stnew StringTokenizer(bf.readLine()); } return st.nextToken(); } String nextLine() throws IOException{ return bf.readLine(); } int nextInt() throws IOException{ return Integer.parseInt(next()); } long nextLong() throws IOException{ return Long.parseLong(next()); } double nextDouble() throws IOException{ return Double.parseDouble(next()); } }2.单词搜索题目链接单词搜索题目描述给出一个二维字符数组和一个单词判断单词是否在数组中出现单词由相邻单元格的字母连接而成相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。数据范围0 行长度 1000 列长度 1000 单词长度 1000例如给出的数组为[XYZE,SFZS,XDEE]时对应的二维字符数组为若单词为XYZZED时应该返回 true也即若单词为SEE时应该返回 true也即若单词为XYZY时应该返回 false。示例1输入[XYZE,SFZS,XDEE],XYZZED[XYZE,SFZS,XDEE],XYZZED返回值truetrue示例2输入[XYZE,SFZS,XDEE],SEE[XYZE,SFZS,XDEE],SEE返回值truetrue示例3输入[XYZE,SFZS,XDEE],XYZY[XYZE,SFZS,XDEE],XYZY返回值falsefalseimport java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可 * * * param board string字符串一维数组 * param word string字符串 * return bool布尔型 */ int m,n; int[] dx{0,0,1,-1}; int[] dy{1,-1,0,0}; boolean[][] vis; char[] arr; public boolean exist (String[] board, String word) { mboard.length; nboard[0].length(); visnew boolean[m][n]; arrword.toCharArray(); for(int i0;im;i){ for(int j0;jn;j){ if(board[i].charAt(j)arr[0]){ if(dfs(board,i,j,0)true) return true; } } } return false; } public boolean dfs(String[] board,int i,int j,int pos){ if(posarr.length-1){ return true; } vis[i][j]true; for(int k0;k4;k){ int xidx[k],yjdy[k]; if(x0 xm y0 yn !vis[x][y] board[x].charAt(y) arr[pos1]){ if(dfs(board,x,y,pos1)) return true; } } vis[i][j]false; return false; } }3.杨辉三角题目链接杨辉三角_牛客题霸_牛客网描述杨辉三角形又称帕斯卡三角形第 i1i1 行是二项式展开 (ab)i(ab)i 的系数。三角形中任意元素等于上一行同列元素与上一行前一列元素之和。下面给出杨辉三角形的前 4 行11112113311111​123​13​1​给定正整数 nn请输出杨辉三角形的前 nn 行。输入描述在一行输入一个整数 nn (1≦n≦34)(1≦n≦34)。输出描述输出杨辉三角形的前 nn 行。每一行从该行第一个元素开始依次输出每两个数之间用一个空格分隔。请不要在行末输出多余的空格。示例1输入4复制输出1 1 1 1 2 1 1 3 3 1复制说明当 n4n4 时杨辉三角形的前 4 行如上所示。示例2输入1复制输出1复制说明当 n1n1 时杨辉三角形只有第 1 行元素为 11。分步完整思路步骤 1初始化第一行只有一个数dp[1][1] 1步骤 2逐行递推填充三角核心易错点i 从 2 循环到 n从第 2 行开始填到第 n 行固定规则 1每行首位dp[i][1] 1固定规则 2每行末尾dp[i][i] 1中间位置j 从 2 到 i-1公式dp[i][j] dp[i-1][j] dp[i-1][j-1]步骤 3格式化打印满足域宽 5 要求外层 i 遍历每一行1~n内层 j 只遍历到 i第 i 行只有 i 个数字不能多打手动用 StringBuffer 实现 5 字符右对齐把数字转字符串算出数字本身长度 len先拼接5-len个前置空格空格串拼接数字后打印整体固定占 5 位宽度每一行全部打完后换行import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in new Scanner(System.in); int nin.nextInt(); int[][] dpnew int[n1][n1]; dp[1][1]1; for(int i2;in;i){ for(int j2;jn;j){ dp[i][1]1; dp[i][j]1; dp[i][j]dp[i-1][j]dp[i-1][j-1]; } } for(int i1;in;i){ for(int j1;ji;j){ StringBuffer retnew StringBuffer(); int lenInteger.toString(dp[i][j]).length(); for(int k0;k5-len;k){ ret.append( ); } System.out.print(ret.toString()dp[i][j]); } System.out.println(); } } }​​总结以上就是今天要讲的内容本文简单记录了算法刷题内容仅作为一份简单的笔记使用大家根据注释理解您的点赞关注收藏就是对小编最大的鼓励

相关新闻