- 博客(30)
- 资源 (5)
- 收藏
- 关注
原创 二分查找NOJ
二分查找NOJ给定一个单调递增的整数序列,问某个整数是否在序列中。输入:第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。输出:每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。输入样例:51 3 4 7 113369输出样例:YesNoNo注意连续return的妙处#include<iostream>using namespac
2021-11-03 16:34:24 387
原创 活动安排NOJ
活动安排NOJ描述:Jack是一名nwpu的大一新生,对学校举办的各种活动都十分的好奇,想尽可能多的参加这些活动。Npwu每天共有N项活动,其开始结束时间分别为B[i],E[i],(i = 1,2,……N)请问Jack一天最多能参加几项活动。当然,Jack在同一时间内只能参加一项活动,即jack参加的活动时间上不能重叠,但时间为[t1,t2],[t2,t3]的两个活动是可以同时参加的。输入:第一行 一个整数N(1<=n<=1000)表示活动总数。接下来N行表示各活动的起始,结束
2021-11-03 14:43:49 273
原创 01背包(动态规划)NOJ
01背包(动态规划)NOJ一个背包容量为c ,现有n件物品,求能装入背包的最大重量是多少?输入:先输入两个正整数n、c(0<n、c<1000),表示物品的件数和背包容量,再输入n个正整数,分别是这n件物品的重量。输出:输出能装入背包的最大重量。输入样例:5 5023 18 13 35 24输出样例:48递推式:当背包装不下W[i]时;dp[i][j]=dp[i-1][j];当背包装得下W[i]时,必须要在i-1的时候能装下j-W[ i ];dp[i]=max{
2021-11-03 14:37:47 199
原创 最大连续子序列和问题NOJ
最大连续子序列和问题NOJ描述:给定一整数序列A0,A1, A2,… An-1 (可能有负数),求A0An-1的一个连续子序列AiAj,使得Ai到Aj的和最大。输入:先输入一个正整数n(1<n<1000),再输入n个整数。输出:输出最大连续子序列的和。输入样例:102 -1 5 -7 2 -1 4 -2 4 -5输出样例:7dp[0]=0;dp[j]=Max{dp[j-1]+a[j],a[j]}#include<iostream>using name
2021-11-01 15:17:58 280
原创 推箱子noj
推箱子noj描述:绝大多数人都玩过推箱子的游戏,控制一个人将箱子推动到目标位置即获得胜利。现请你编写一个程序,判断将箱子推到目标位置至少需要多少步。输入:推箱子的平面区域为固定大小(10*10),使用10行10列输入推箱子的初始局面。其中,0代表空格,1代表墙,2代表箱子,3代表目标位置,4代表人。注:游戏中只有一个箱子,一个目标位置,一个人。输出:输出将箱子推到目标位置的最小步数;若箱子不可能被推到目标位置,输出-1。输入样例:0000000000000000030001000000
2021-10-26 20:14:36 210
原创 六数码noj
六数码noj现有一两行三列的表格如下:A B CD E F把1、2、3、4、5、6六个数字分别填入A、B、C、D、E、F格子中,每个格子一个数字且各不相同。每种不同的填法称为一种布局。如下:1 3 52 4 6布局12 5 64 3 1布局2定义α变换如下:把A格中的数字放入B格,把B格中的数字放入E格,把E格中的数字放入D格,把D格中的数字放入A格。定义β变换如下:把B格中的数字放入C格,把C格中的数字放入F格,把F格中的数字放入E格,把E格中的数字放入B格。问:对于给定的布局,
2021-10-23 10:24:15 120
原创 NOJ电子老鼠闯迷宫
NOJ电子老鼠闯迷宫描述:有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。输入:本题包含一个测例。在测例的第一行有四个由空格分隔的整数,分别表示起点的坐标S(x.y)和终点的坐标T(x,y)。从第二行开始的12行中,每行有12个字符,描述迷宫的情况,其中’X’表示建筑物,’.'表示路.输出:输出一个整数,即电子
2021-10-17 16:54:31 254
原创 noj加一乘二平方
noj加一乘二平方描述:最简单的队列的使用#include <iostream> #include <queue> using namespace std; queue<int> q1; int main() {int temp, x;q1.push(5);//入队q1.push(8);//入队temp = q1.front();//访问队首元素q1.pop();//出队q1.empty();//判队列是否为空q1.back();//返回队
2021-10-17 15:58:25 285
原创 NOJ字母转换
先dfs出入栈出栈顺序,再对栈进行操作#include<iostream>#include<string>#include<stack>using namespace std;string Sin, Sout;int in, out, num,l1,l2;//入栈个数 出栈个数 栈内元素 字符串长度int m;//深搜次数char op[100];stack<char>S;void dfs(int m){ if (m >= l1.
2021-10-10 20:56:37 118
原创 NOJ踩气球
NOJ踩气球描述:六一儿童节,小朋友们做踩气球游戏,气球的编号是1~100,两位小朋友各踩了一些气球,要求他们报出自己所踩气球的编号的乘积。现在需要你编一个程序来判断他们的胜负,判断的规则是这样的:如果两人都说了真话,数字大的人赢;如果两人都说了假话,数字大的人赢;如果报小数字的人说的是真话而报大数字的人说谎,则报小数字的人赢(注意:只要所报的小数字是有可能的,即认为此人说了真话)。输入:输入为两个数字,0 0表示结束;输出:输出为获胜的数字。输入样例:36 6249 3430 0
2021-10-07 01:59:00 505
原创 NOJ迷宫问题
NOJ迷宫问题描述:给一个20×20的迷宫、起点坐标和终点坐标,问从起点是否能到达终点。输入:多个测例。输入的第一行是一个整数n,表示测例的个数。接下来是n个测例,每个测例占21行,第一行四个整数x1,y1,x2,y2是起止点的位置(坐标从零开始),(x1,y1)是起点,(x2,y2)是终点。下面20行每行20个字符,’.’表示空格;’X’表示墙。输出:每个测例的输出占一行,输出Yes或No。输入样例:20 0 19 19…XXXXXXXXXXXXXXXXXXXX………
2021-10-06 23:53:10 169
原创 NOJ八皇后问题
NOJ八皇后问题描述:输出8皇后问题所有结果。输入:没有输入。输出:每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。输入样例:输出样例:输出的前几行:No 1:A……A……A…A……A……A..A……A…No 2:A……A……A…A……A.…A….A……A…#include<
2021-10-06 15:31:49 320
原创 NOJ堡垒问题
NOJ堡垒问题描述:城堡是一个4×4的方格,为了保卫城堡,现需要在某些格子里修建一些堡垒。城堡中的某些格子是墙,其余格子都是空格,堡垒只能建在空格里,每个堡垒都可以向上下左右四个方向射击,如果两个堡垒在同一行或同一列,且中间没有墙相隔,则两个堡垒都会把对方打掉。问对于给定的一种状态,最多能够修建几个堡垒。输入:每个测例以一个整数n(1<=n<=4)开始,表示城堡的大小。接下来是n行字符每行n个,‘X’表示该位置是墙,‘.’表示该位置是空格。n等于0标志输入结束。输出:每个测
2021-10-06 15:12:55 182
原创 NOJ装载问题
装载问题描述:有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。输入:多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。输出:对于每个测例在单独的一行内输出Yes或No。输入样例:7 8 28 77 9 28 80 0 0输出样例:YesNo#include<iostream
2021-10-05 21:51:53 129
原创 Knight Moves(bfs)
Knight Moves(bfs)向8个方向移动,起始位置到终点位置的最小步数#include<iostream>#include<queue>#include<cstring>using namespace std;const int len=302;struct horse{ int x; int y; int step;};bool visit[len][len];const int way[8][2]={{-2,-1
2021-03-18 10:12:46 486
原创 Catch That Cow(bfs)
Catch That Cow#include<iostream>#include<queue>#include<cstring>using namespace std;const int position=100001;int N,K;bool visit[position];struct pos{ int x;//坐标 int time;//时间,与步数意义同};void bfs(){ queue<pos>Fa
2021-03-18 10:02:25 59
原创 poj1753棋盘
poj1753#include<iostream>using namespace std;int chess;int step;bool Flag=false;void upset(int i)//翻转棋子{ chess=chess^(0x1<<i); if(i-1>=0&&i%4)//不是边界的棋子,针对于4,8,12 chess=chess^(0x1<<(i-1)); if(i-4>=0)
2021-03-16 17:39:57 66
原创 棋盘问题
棋盘问题在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Output对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C&l
2021-03-08 23:23:41 109
原创 Oil Deposits
Oil Deposits输入一个m行n列的字符矩阵,统计字符“@”组成多少个油田(八连块)。如果两个字符“@”所在 的格子相邻(横、竖或者对角线方向),就说它们属于同一个油田。input1 1*3 5@@*@@@*1 8@@***@5 5****@@@@@**@@@@@@@**@0 0output0122分析从每个“@”格子出发,递归遍历它周围的“@”格子。当“@”的八方格中有“@”时,是一块油田,标号相同,访问前查看是否标号,避免被多次访问。#in
2021-03-07 12:23:34 90
原创 2021-02-20
two pointers算法 给定一个递增的正整数序列和一个正整数 M,求序列中的两个不同位置的数 a 和 b,使得它们的和恰好为 M,输出所有满足条件的方案。two pointers算法利用枚举有效降低复杂度令下标 i 的初值为0,下标 j 的初值为 n-1,即令 i、j 分别指向序列的第一个元素和最后一个元素,接下来根据 a[i]+a[j] 与 M 的大小来进行下面三种选择,使 i 不断向右移动、使 j 不断向左移动,直到 i≥j 成立若 a[i]+a[j]==M ,说明找到了其中一种方案
2021-02-20 21:06:16 56
原创 F—接水问题Ⅱ
接水问题Ⅱ题目n个人一起排队接水,第i个人的重要性是ai,需要bi的时间来接水。1 <= n <= 1000000 <= bi <= 10000 <= ai <= 1000同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。完成接水的人会立刻消失,不会继续等待。你可以决定所有人接水的顺序,并希望最小化所有人等待时间乘以自己的重要性ai的总和。input第一行一个整数n。 以下n行,每行两个整数ai和bi。样例input41 42 3
2021-02-14 00:34:21 215
原创 E—铺设道路
铺设道路题目春春是一名道路工程师,负责铺设一条长度为 n 的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n 块首尾相连的区域,一开始,第 i 块区域下陷的深度为 \(d_i\) 。春春每天可以选择一段连续区间L,R ,填充这段区间中的每块区域,让其下陷深度减少 1。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 0 。春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 0 。input输入文件包含两行,第一行包含一个整数
2021-02-14 00:14:05 225
计算机网络实验 西工大计算机学院
2023-10-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人