- 博客(25)
- 收藏
- 关注
原创 摆花动态规划
小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算一共有多少种不同的摆花方案。对于100%数据,有0<n≤100,0<m≤100,0≤ ai≤100。对于50%数据,有0<n≤20,0<m≤20,0≤ai≤20。对于20%数据,有0<n≤8,0<m≤8,0≤ai≤8。输出只有一行,一个整数,表示有多少种方案。
2023-06-04 17:28:51
131
原创 合唱队形动规
K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < …第一行是一个整数N(2 <= N <= 100),表示同学的总数。第一行有n个整数,用空格分隔,第i个整数Ti(130 <= Ti <= 230)是第i位同学的身高(厘米)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
2023-06-04 17:28:00
136
原创 挖地雷动规
在一个地图上有N个地窖(N<=200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。以下有若干行,每行有两个数x,y表示x可以到y,保证x小于y。第二行有n个整数表示每个地窖的地雷数。第一行一个整数n表示有n个地窖。第一行输出挖地雷的顺序。第二行为最多挖出的地雷数。
2023-06-04 17:27:17
147
原创 数字三角形进阶
规定:(1)每一步可向下或向右下走;(2)1<三角形行数<25;(3)三角形中的数字为正整数<1000;(4)路径必须经过(n div 2 ,n div 2)这个点。给出一个数字三角形。请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。经过点(n div 2,n div 2)的路径上的数字的总和最大值。第2到n+1行为每个路径上的的权值。
2023-06-04 17:26:57
114
原创 走迷宫(最少步数)
题目描述一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入第一行是两个整数,R和C,代表迷宫的长和宽。(1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫。注意:空地格子用'.'表示,有障碍物的格子用'#'表示。迷宫左上角和右下角都是'.'。输出输出
2022-12-19 11:15:43
699
原创 自然数拆分II
对于大于1的自然数N (N<20) ,可以拆分成若干个大于等于1的自然数之和。例如,当N=6时,6=66=5+16=4+26=4+1+16=3+36=3+2+16=3+1+1+16=2+2+26=2+2+1+16=2+1+1+1+16=1+1+1+1+1+1输入一个大于1的自然数N,N<20输出所有的拆分情况.按由大到小的顺序排列。样例输入6样例输出65 14 24 1 13 33 2 1
2022-12-19 11:10:48
520
原创 自然数拆分I
对于大于1的自然数N,可以拆分成若干个大于等于1的自然数之和。例如, N=6时:6=1+1+1+1+1+16=1+1+1+1+26=1+1+1+36=1+1+2+26=1+1+46=1+2+36=1+56=2+2+26=2+46=3+36=6输入一个大于1的自然数N(N<20)输出所有的拆分情况.按字典序排列。样例输入6样例输出1 1 1 1 1 11 1 1 1 21 1 1 31 1 2 21
2022-12-19 11:10:03
171
原创 彩票。。。
题目描述有一种彩票的玩法是从1~49这49个整数中挑选6个数字。小明为此研究出一个选号的策略,就是从这49个数字中选出一个子集S,S中包含了k(k>6)个数字,然后从S中再选择6个数字作为最终选定的号码。你的任务是,给你k和集合S,输出从S中选择投注号码的所有组合。输入输入:第一行是首先是一个整数k(6<k<13)。第二行是k个整数,表示集合S,这k个整数按升序给出,各个数字之间以一个空格间隔。输出输出所有的投注组合,每行一种,
2022-12-19 11:08:49
284
原创 组合+判断素数
题目描述已知 n 个整数b1,b2,…,bn以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。现在,要求你计算出和为素数共有多少种。例如上例,只有一种的和为素数:3+7+19=29。输入第一行两个整数:n , k (1<=n&l
2022-12-19 11:07:48
165
原创 红与黑。。。
题目描述小明站在一个矩形房间里,这个房间的地面铺满了地砖,每块地砖的颜色或是红色或是黑色。小明一开始站在一块黑色地砖上,并且小明从一块地砖可以向上下左右四个方向移动到其他的地砖上,但是他不能移动到红色地砖上,只能移动到黑色地砖上。请你编程计算小明可以走到的黑色地砖最多有多少块。输入第一行:两个正整数n和m,分别表示地砖的行数和列数。(1<=n,m<=20)接下来n行,每行包含m个字符,字符含义如下:‘.’表示黑地砖;‘#’表示红地砖;‘@’表示小
2022-12-19 11:06:52
79
原创 猴群(和“细胞”差不多)
题目描述下面的矩形是由数字0到9组成,其中数字0代表树,1~9代表猴子,凡是由0或矩形边围起来的区域表示有一群猴子在这一带。给定数字矩形,求矩形中有多少群猴子。输入第一行为矩形的行数m、列数n(n,m<=100);再下面为一个m×n的数字矩形。输出一个数,表示猴群的数目。样例输入Copy4 100234500067103456050020456006710000000089样例输出Co
2022-12-19 11:04:39
292
原创 迷宫问题。
题目描述设有一个N*N(2<=N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放有0和1,0表示可通,1表示不能,迷宫走的规则如下图所示:即从某点开始,有八个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。找出一条从入口(左上角)到出口(右上角)的路径(不能重复)。输出路径总数。如果无法到达,输出0。输入3000011100输出2代码#include <bits/stdc++.h>
2022-12-19 11:02:45
604
原创 LETTERS
题目描述给出一个R×C 的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。输入第一行,输入字母矩阵行数R和列数S,1≤R,S≤20接着输出R行S列字母矩阵。输出最多能走过的不同字母的个数。样例输入3 6HFDFFBAJHGDHDGAGEH样例输出6代码#include <bits/stdc++.h>using namespace std;int r,s,
2022-12-19 10:58:24
85
原创 细胞(cell)
【问题描述】一柜形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字为同一细胞,求所给矩形阵列的细胞个数.如下阵列有4个细胞0234500067103456050020456006710000000089输入整数m、nm行n列矩阵(1<=n,m<=100)输出细胞的个数样例输入4 100234500067103456050020456006710000000089样例输出4#includ
2022-12-19 07:57:46
264
1
原创 小老鼠走迷宫
一个N*M的迷宫矩阵由0和1组成,1表示墙壁,0表示通路。一只小老鼠从左上角即坐标(1,1)出发,只能走上下左右四个方向(不能走斜线),问小老鼠能否吃到右下角出口即坐标(N,M)处的奶酪。M,N<=2000输入第一行输入空格分开的两个整数N,M,表示迷宫的行数和列数然后输入N行M列的迷宫矩阵输出若能走到出口,输出“yes”,否则输出“no”样例输入5 50 0 1 0 10 0 1 0 00 1 0 1 10 1 0 0 00 0 0 0 0样例输
2022-12-03 21:36:21
407
原创 走迷宫(最小步数,宽搜习题)
个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入第一行是两个整数,R和C,代表迷宫的长和宽。(1<=R,C<=40)接下来是R行,每行C个字符,代表整个迷宫。注意:空地格子用'.'表示,有障碍物的格子用'#'表示。迷宫左上角和右下角都是'.'。输出输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。注
2022-11-25 01:15:19
224
原创 营救(宽搜习题)
【问题描述】铁达尼克号遇险了 它发出了求救信号。距离最近的哥伦比亚号收到了讯息。时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图 这张海洋图上划分成了n*n个比较小的单位,用1表示陆地 用0表示海洋 船只能从一个格子移到相邻的4个格子里。为了尽快赶到出事地点,哥伦比亚号最少要走多少距离。输入第一行为n (n<=1000)接下来n行 为n*n行为一个0 ,1矩阵,表示海洋地图最后一行为4个小于n的整数 表示哥伦亚号和铁达尼克号的坐标输出哥伦比亚号到铁达尼克号的
2022-11-25 01:13:53
623
原创 宽搜习题(奇怪的电梯)
呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而目第i层楼(1<=i<=N上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字.。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,......),从一楼开始。在一楼,按"上"可以到4楼,按"下"是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢?输入输入共有二行:第一行
2022-11-23 21:41:00
554
原创 宽搜习题(快抓住那头牛)
农夫约翰已经获悉逃跑的牛的位置,想立刻机住它。农夫的位置在直线上的N(0≤N≤100,00)点,牛在同一直线上的k(0≤k≤10,00)点,约有步行和闪移两种走法。步行:农夫约翰可以一分钟从点走到x-1或x+1点物闪移:衣夫约翰可以一分钟从点徒到2*x点假设牛没有意识到农夫的行动,站在原地不动。问:农夫最少需要花多少时间时能机住那头牛?输入两个正数N,K(0≤N≤100,000)(0≤K≤100,000)输出一个整数,农夫抓住那头牛的最少时间样例输入5 17样
2022-11-23 21:39:26
163
原创 C++代码实现中缀表达式求值(基于中缀表达式转后缀表达式)
C++代码实现中缀表达式求值(基于中缀表达式转后缀表达式)样例输入:3*(2+5)样例输出:21代码:#include <bits/stdc++.h>using namespace std;string change(string s){ stack<char> st; string ans; st.push('#');//防止数据溢出!! int pri[350]; pri['+']=1; pri['
2022-11-18 00:09:58
878
2
原创 C++代码实现中缀表达式转后缀表达式
C++代码实现中缀表达式转后缀表达式样例输入:14+3*(20/5)-8样例输出:14 3 20 5 / * + 8 -代码:#include<bits/stdc++.h>using namespace std;int main(){ stack<char> st; string s; string ans; st.push('#');//防止数据溢出!! int pri[350]; pri['+']=1;
2022-11-18 00:05:17
628
原创 C++实现单词按自己的字典序排序
#include <bits/stdc++.h>using namespace std;int n,id;string s[1010];int dict[300];//此处定义字典序数组bool cmp(string s1,string s2){ int i=0; while(1) { if(dict[s1[i]]<dict[s2[i]]) return true; if(dict[s1[i]]>dict[s2[i]]) retu
2022-11-03 22:03:02
1374
原创 总结一波数字矩阵的小技巧
模板#include<bits/stdc++.h>using namespace std;int main(){ int n,a[110][110]; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { a[i][j]=表达式; }
2022-10-25 22:07:48
56
原创 代码实现阶乘之和
输入:5输出:153解释输出:153=1!+2!+3!+4!+5!#include<bits/stdc++.h>using namespace std;int main(){ long long n,i,j,sum=0,cnt=1; cin>>n; for(i=1;i<=n;i++) { cnt=1; for(j=1;j<=i;j++) { cnt=cn
2022-10-25 22:06:26
66
原创 代码实现x~y之间每个数字的颠倒数排序(从小到大)
输入:22 39输出:303122322333243425352636273728382939#include <bits/stdc++.h>using namespace std;int n,a[110];bool cmp(int c,int d){ int c1=0,d1=0; while(c!=0) { c1=c1*10+c%10; c=c/10
2022-10-25 22:04:42
267
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人