![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序设计与算法
jsfantasy
虚心、实腹、弱志、强骨
展开
-
POJ1222熄灯问题
问题描述:程序代码:/* *思路1:枚举所有可能的开关状态,对每个状态计算下最后灯的情况,看是否都熄灭 * 每种按钮有两种状态,一共有30个开关,那么状态数是2的30次方,太多不可取 *思路2:如何减少枚举的数目呢? 如果存在某个局部,一旦这个局部状态被确定后,那么剩余其他部分的状态只能 是确定的一种或者不多的n种,那么只需要枚举这个局部状态即原创 2017-02-16 12:38:35 · 2160 阅读 · 2 评论 -
动态规划——求最长上升子序列长度
/* *问题描述:求最长上升子序列长度 */#include #include #include using namespace std;const int MAXN = 1010;int a[MAXN];//存储输入的数据int maxLen[MAXN];//存储从开始到每一个数据中最长上升子序列长度int main(){ int N; cin>>N;原创 2017-02-28 10:55:51 · 737 阅读 · 0 评论 -
POJ1458动态规划——最长公共子序列
/* *问题描述:求最长公共子序列(POJ1458) */ #include #include using namespace std; char sz1[1000]; char sz2[1000]; int maxLen[1000][1000];//存储最长公共子序列的长度 int main() { while(cin >>sz1 >>sz2) {原创 2017-02-28 10:58:40 · 492 阅读 · 0 评论 -
完美立方问题
问题描述:如下图所示:算法:/* *问题描述:完美立方问题 */#include #include using namespace std;int main(){ int N; scanf("%d",&N); for(int a=2;a<=N ;a++) for(int b=2;b< a ; ++b) f原创 2017-02-16 09:38:45 · 839 阅读 · 1 评论 -
POJ1013称硬币
问题描述:如下图程序代码:/* *问题描述:POJ1013称硬币 */ #include #include using namespace std; char Left[3][7];//天平左边硬币 char Right[3][7];//天平右边硬币 char result[3][7];//存储结果 bool IsFake(char c,bool lig原创 2017-02-16 10:22:32 · 833 阅读 · 0 评论 -
蓝桥杯练习 未名湖的烦恼
//问题描述// 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。// 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)//输入格式// 两个整数,原创 2017-12-11 15:10:11 · 331 阅读 · 0 评论 -
蓝桥杯 数字三角形
问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1)输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形输出格原创 2017-12-11 17:08:42 · 398 阅读 · 0 评论 -
蓝桥杯: 矩阵乘法
题目:给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22输入格式 第一行是一个正整数N、M(1 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开样例输入原创 2017-12-10 22:21:48 · 512 阅读 · 0 评论 -
蓝桥杯 矩形面积交
//基础练习 矩形面积交//// 问题描述// 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们//// 给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。// 输入格式// 输入仅包含两行,每行描述一个矩形。// 在每行中,给出矩形的原创 2017-12-10 17:30:16 · 322 阅读 · 0 评论 -
蓝桥杯: 完美的代价
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : madam (回文!完美!)输入原创 2017-12-09 15:49:29 · 610 阅读 · 0 评论 -
动态规划——数字三角形问题(空间优化)
/* *问题描述:数字三角形问题(POJ1163) */ /*递推法*/ #include #include #define MAX 101 using namespace std; int D[MAX][MAX]; int n; int maxSum[MAX][MAX]; int main() { int i,j; cin>>n; f原创 2017-02-28 10:53:02 · 902 阅读 · 0 评论 -
动态规划_数字三角形问题
/* *问题描述:数字三角形问题(POJ1163),求最上方数字到最下行所有路径中和最大的和 */ /*递归法*/ /* #include #include #define MAX 101 using namespace std; int D[MAX][MAX];//用来存放输入的数据 int n; int MaxSum(int i,int j)//计算D[i][j]到底边原创 2017-02-28 10:48:53 · 620 阅读 · 0 评论 -
整数划分问题(递归法)
/* 问题描述:整数划分问题 递归法: 根据n和m的关系,考虑以下几种情况: (1)当n=1时,不论m的值为多少(m>0),只有一种划分即{1}; (2)当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,...,1}; (3)当n=m时,根据划分中是否包含n,可以分为两种情况: (a)划分中包含n的情况,只有一个即{n};转载 2017-02-18 15:29:24 · 545 阅读 · 0 评论 -
汉诺塔问题
/* *问题描述:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。 * 要求按下列规则将所有圆盘移至C杆:提示:可将圆盘临时置于B杆,也可将从A杆 * 移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?最少要移动多少次? */ #include using namespace std; void Hano原创 2017-02-16 13:29:44 · 633 阅读 · 0 评论 -
N皇后问题
/* 问题描述:输入一个正整数N,则程序输出N皇后问题的全部摆法。 输出结果里的每一行都代表一种摆法。行里的第i个数字 如果是n,就代表第i行的皇后应该放在第n列。皇后的行、列编号都是从1 开始计算 */#include #include using namespace std;int N;int queenP原创 2017-02-16 15:24:00 · 652 阅读 · 0 评论 -
逆波兰表达式问题
/* *问题:输入一行逆波兰表达式,程序运行后输出表达式结果 *定义:逆波兰表达式: 1.一个数是一个逆波兰表达式值为该数 2."运算符 逆波兰表达式 逆波兰表达式" 是逆波兰表达式,值为两个逆波兰表达式的值运算的结果 */#include #include #include using namespace std;double exp(){//读原创 2017-02-16 16:01:43 · 703 阅读 · 0 评论 -
表达式求值(递归算法)
问题描述:见下图程序代码:/* *题目描述:表达式求值(递归算法) 表达式:1、可以是一个项 2、也可以由多个项通过加减构成 项:1、项本身可以是一个因子 2、项也可以由若干个因子通过乘除组成 因子:1、因子本身可以是一个数字 2、因子也可以由表达式原创 2017-02-17 10:24:46 · 5735 阅读 · 1 评论 -
爬台阶(递归)
/* *问题描述:爬楼梯,可以每次走一级或者两级,输入台阶数,输出不同的走法数 分析:递归表达式 f(n) = f(n-1) + f(n-2) 终止条件(有三种):1、n<0 0;n=0 1 2、n=0 1;n=1 1 3、n=1 1;n=2 2 */ #inclu原创 2017-02-17 10:52:05 · 607 阅读 · 0 评论 -
放苹果问题(递归)
/* *问题描述:把M个同样的苹果放到N个同样的盘子里面,问有多少种不同的算法? 注意:5 1 1和1 5 1是同一种放法 输入:输入一个整数表示有几行测试数据,下面每行分别输入M和N */ #include using namespace std; int f(int m,int n) { if(m < n)//盘子数比苹果数多的情况原创 2017-02-17 11:19:44 · 1726 阅读 · 0 评论 -
求24(递归)
问题描述:见下图程序代码:/* *输入:输入数据包括4个小于10的整数。 输出:对于如果可以得到24,输出“YES”;否则输出“NO” */ #include #include using namespace std; double a[5]; #define EPS 1e-6 bool isZero(double x)//判断浮点数是否小于零 {原创 2017-02-17 13:37:44 · 888 阅读 · 0 评论 -
归并排序
/* *算法描述:1、把前一半排序 2、把后一半排序 3、把两半归并到一个新的有序数组,然后再拷贝到原数组,排序完成 */ #include using namespace std; void Merge(int a[],int s,int m,int e,int tmp[]) {//将数据a的局部a[s,m]和a[m+1,e]合并到原创 2017-02-17 14:34:42 · 409 阅读 · 0 评论 -
快速排序
/* *快速排序:1、设k=a[0],将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k右边, 和k相等的,不关心在k左右出现均可(0(n)时间完成) 2、把k左边的部分快速排序 3、把k右边的部分快速排序 */ #include using namespace std; void swap(原创 2017-02-17 15:30:57 · 245 阅读 · 0 评论 -
蓝桥杯 Sine之舞
题目:最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,原创 2017-12-07 23:08:22 · 901 阅读 · 0 评论