您的位置:首页 > 房产 > 建筑 > 拓者设计吧室内设计论坛_辽宁省建设工程信息网停用_百度商品推广平台_企业品牌类网站有哪些

拓者设计吧室内设计论坛_辽宁省建设工程信息网停用_百度商品推广平台_企业品牌类网站有哪些

2024/12/22 0:34:04 来源:https://blog.csdn.net/weixin_73861555/article/details/144583270  浏览:    关键词:拓者设计吧室内设计论坛_辽宁省建设工程信息网停用_百度商品推广平台_企业品牌类网站有哪些
拓者设计吧室内设计论坛_辽宁省建设工程信息网停用_百度商品推广平台_企业品牌类网站有哪些

目录

kotori和⽓球(组合数学)

题目解析

讲解算法原理

编写代码

⾛迷宫(BFS)

题目解析

讲解算法原理

编写代码


kotori和⽓球(组合数学)

题目解析

1.题目链接:登录—专业IT笔试面试备考平台_牛客网

2.题目描述

题目描述

kotori最近迷上了摆气球的游戏。她一共有n种气球,每种气球有无数个。她要拿出若干个气球摆成一排。

但是,由于气球被施放了魔法,同样种类的气球如果相邻会发生爆炸,因此若两个相邻的气球种类相同被视为不合法的。

kotori想知道,摆成一排m个一共有多少种不同的方案?

由于该数可能过大,只需要输出其对109取模的结果。

输入描述:

输入仅有一行,为两个整数n和m(1≤n,m≤100)

输出描述:

输出一个整数,为方案数对109取模的结果。

示例1

输入

3 2

3 2

输出

6

6

讲解算法原理

解法:
算法思路:

简单的排列组合问题,结果等于n与m个n-1的乘积。

编写代码

c++算法代码:

#include <iostream>
using namespace std;
const int MOD = 109;
int main()
{int n, m;cin >> n >> m;int ret = n;for(int i = 0; i < m - 1; i++){ret = ret * (n - 1) % MOD;}cout << ret << endl;return 0;
}

java算法代码:

import java.util.*;
public class Main
{public static int MOD = 109;public static void main(String[] args){Scanner in = new Scanner(System.in); int n = in.nextInt(), m = in.nextInt();  int ret = n; for(int i = 0; i < m - 1; i++) { ret = ret * (n - 1) % MOD; }System.out.println(ret);}
}

⾛迷宫(BFS)

题目解析

1.题目链接:走迷宫_牛客题霸_牛客网

2.题目描述

描述

给定一个n\times mn×m的网格,在网格中每次在不超过边界的情况下可以选择向上、向下、向左、向右移动一格。网格中的一些格子上放置有障碍物,放有障碍物的格子不能到达。求从(x_s,y_s)(xs​,ys​)到(x_t,y_t)(xt​,yt​)最少的移动次数。若不能到达,输出-1−1。

输入描述:

第一行输入两个整数n,mn,m (1\le n, m \le 10001≤n,m≤1000),表示网格大小。
第二行输入四个整数x_s,y_s,x_t,y_txs​,ys​,xt​,yt​ (1\le x_s, x_t \le n1≤xs​,xt​≤n, 1\le y_s, y_t \le m1≤ys​,yt​≤m),表示起点和终点的坐标。
接下来的nn行,每行输入一个长度为mm的字符串。其中,第ii行第jj个字符表示第ii行第jj列的格子上的障碍物情况,若字符为'*',则格子上有障碍物,若字符为'.',则格子上没有障碍物。
保证起点不存在障碍物。

输出描述:

输出一行一个整数,表示从(x_s,y_s)(xs​,ys​)到(x_t,y_t)(xt​,yt​)最少的移动次数。

示例1

输入:

5 5
1 1 5 5
.....
****.
.....
**.**
.....

输出:

12

示例2

输入:

5 5
1 1 4 5
.....
****.
.....
**.**
.....

输出:

-1

示例3

输入:

5 5
1 1 5 5
.....
****.
.....
*****
.....

输出:

-1

讲解算法原理

解法:
算法思路:

简单bfs应⽤题。

编写代码

c++算法代码:

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
const int N = 1010;
int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};
int n, m;
int x1, y1, x2, y2;
char arr[N][N];int dist[N][N]; // [i, j] 位置是否已经搜索过,以及到达 [i, j] 位置的最短距离
int bfs()
{if(arr[x2][y2] == '*') return -1;memset(dist, -1, sizeof dist); // 表⽰还没开始搜索 queue<pair<int, int>> q; q.push({x1, y1}); dist[x1][y1] = 0;while(q.size()){auto [a, b] = q.front(); q.pop(); for(int i = 0; i < 4; i++) { int x = a + dx[i], y = b + dy[i]; if(x >= 1 && x <= n && y >= 0 && y <= m && arr[x][y] == '.' && dist[x][y] == -1){q.push({x, y}); dist[x][y] = dist[a][b] + 1; if(x == x2 && y == y2) return dist[x2][y2]; }}}return -1;
}
int main()
{cin >> n >> m >> x1 >> y1 >> x2 >> y2; for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){cin >> arr[i][j];}}cout << bfs() << endl;return 0;
}

java算法代码:

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static int N = 1010; public static int[] dx = {0, 0, 1, -1}; public static int[] dy = {-1, 1, 0, 0};public static int n, m, x1, y1, x2, y2; public static char[][] arr = new char[N][N];public static int[][] dist = new int[N][N]; // 标记当前位置有没有搜索过,以及⾛
到该位置时候的最短步数public static int bfs(){if(arr[x2][y2] == '*') return -1;for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++)dist[i][j] = -1; // 表明刚开始每个位置都没有搜索过 Queue<int[]> q = new LinkedList<>(); q.add(new int[]{x1, y1}); dist[x1][y1] = 0;while(!q.isEmpty()){int[] t = q.poll(); int a = t[0], b = t[1]; for(int i = 0; i < 4; i++) { int x = a + dx[i], y = b + dy[i]; if(x >= 1 && x <= n && y >= 1 && y <= m && arr[x][y] == '.' && dist[x][y] == -1){q.add(new int[]{x, y}); dist[x][y] = dist[a][b] + 1; if(x == x2 && y == y2) { return dist[x][y]; }}}}return -1;}public static void main(String[] args) {Scanner in = new Scanner(System.in); n = in.nextInt(); m = in.nextInt(); x1 = in.nextInt(); y1 = in.nextInt(); x2 = in.nextInt(); y2 = in.nextInt(); for(int i = 1; i <= n; i++){String tmp = in.next(); for(int j = 1; j <= m; j++) { arr[i][j] = tmp.charAt(j - 1); }}System.out.println(bfs());}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com