算法设计与分析
算法相关知识
机智的程序DOG
这个作者很懒,什么都没留下…
展开
-
调和级数实现代码
1/1 + 1/2 + 1/3 + 1/4 + ... 在数学上称为调和级数。它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。但是,它发散的很慢:前1项和达到 1.0前4项和才超过 2.0前83项的和才超过 5.0那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?请填写这个整数。注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。public cla......原创 2018-03-22 20:21:40 · 398 阅读 · 0 评论 -
C++整型数组排序
整型数组排序#include <iostream>using namespace std;void sort(int array[],int len){ int i = 0, j = 0; int temp = 0; for (i = 0; i < len-1; i++) { for (j = i+1; j < le...原创 2018-03-22 19:17:05 · 3841 阅读 · 1 评论 -
TEX中的引号
在Tex中,做双引号的" `` ",右双引号是" '' "(两个回车左边的).输入一篇包含双引号的文章,你的任务是把它转换成TeX的格式。 样例输入:"To be or not to be,"quoth the Bard,"that is the question".样例输出: ``To be or not to be''...原创 2019-02-11 19:07:00 · 438 阅读 · 1 评论 -
WERTYU
WERTYU 把手放在键盘上,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。键盘如图3-2所示。输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。例如输入中不会出现大写字母A.样例输入;O S, GOMR YPFSU/样例输出:I AM FINE TODAY. #include <s...原创 2019-02-11 19:17:41 · 605 阅读 · 0 评论 -
基础练习 回文数
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式 按从小到大的顺序输出满足条件的四位十进制数。#include <iostream>using namespace std;int main(){ int a = 0, b = 0; for(a = 1; a <= 9; a++) { f...原创 2019-03-06 19:58:36 · 234 阅读 · 0 评论 -
基础练习 特殊的数字
问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。#include <iostream>using namespace std;int lifang(int n){ return n * n...原创 2019-03-06 20:04:25 · 268 阅读 · 0 评论 -
基础练习 杨辉三角形
问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的...原创 2019-03-06 20:23:18 · 256 阅读 · 0 评论 -
基础练习 查找整数
问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61 9 4 8 3 99样例输出2数据...原创 2019-03-06 20:31:30 · 256 阅读 · 0 评论 -
基础练习 数列特征
问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1 <= n...原创 2019-03-06 20:41:43 · 241 阅读 · 0 评论 -
算法训练 审美课
问题描述《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像是小朋友画的……老师只想知道,有多少对同学给出的答案完全相反,这样他就可以用这个数据去揭穿披着皇帝新衣的抽象艺术了(支持帅老师^_^)。 答案完全相反是指对每一幅画的判断都相反。输入格...转载 2019-03-12 18:34:37 · 369 阅读 · 0 评论 -
开灯问题
有编号1~n个灯泡,起初所有的灯都是灭的。有k个同学来按灯泡开关,如果灯是亮的,那么按过开关之后,灯会灭掉。如果灯是灭的,按过开关之后灯会亮。现在开始按开关。第1个同学,把所有的灯泡打开。 第2个同学,按下编号为2的倍数的开关。 第3个同学,按下编号为3的倍数的开关。 #include <stdio.h>#include <string.h> #def...原创 2019-02-10 11:07:25 · 462 阅读 · 0 评论 -
蛇形填数
在n*n的方阵里填入1,2,...,n*n (n<=8),要求填成蛇形。例如n=4时的方阵为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 #include <stdio.h>#include <string.h>#define maxn 20int a[maxn][max...原创 2019-02-10 11:04:20 · 244 阅读 · 0 评论 -
最大子段和
#include<iostream>using namespace std;int A[100];int Max3(int i, int j, int k){ return (k > i) ? k : (i = (i > j) ? i : j);}static int MaxSubSum(const int A[],int Left,int Right)...原创 2019-01-13 11:39:25 · 123 阅读 · 0 评论 -
C++全排列问题
#include <iostream>using namespace std;void Perm(int list[],int k,int m){ if(k==m) { for(int i=0;i<=m;i++) cout<<list[i]<<" "; cout<<endl; } else for(int j...原创 2018-09-19 11:53:55 · 752 阅读 · 0 评论 -
C++语言STL标准模板库(list)
#include <list>#include <iostream>using namespace std;int main(){ list<int> mylist (8,1); //8个100 mylist.push_back (2); //表尾插入 list<int> :: iterator it = mylis...原创 2018-09-19 11:58:54 · 2225 阅读 · 0 评论 -
c++语言STL标准模板库(map)
#include <map>#include <iostream>using namespace std;int main(){ map <string,float,less<string> > c; c.insert (make_pair("Cafe",7.75)); c.insert (make_pair("Banana",1....原创 2018-09-19 12:01:07 · 1494 阅读 · 0 评论 -
最大字段和
#include <stdio.h>#define NUM 1001using namespace std;int a[NUM];int MaxSum(int n){ int sum = 0; int b = 0; for (int i = 0; i < n; i++) { if (b>0) { b += a[i]; }else {...原创 2018-09-26 11:03:14 · 330 阅读 · 0 评论 -
整数划分问题
所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 <= mi <= n),则{m1,m2,...,mi}为n的一个划分。 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)<=m,则称它属于n的一个m划分。这里我们记n的m划分的个数为f(n,m); ...原创 2018-10-06 15:33:57 · 176 阅读 · 0 评论 -
二分搜索算法
#include <stdio.h>using namespace std;template<class Type>int BinarySearch(Type a[],const Type&x,int n){ int left = 0; int right = n - 1; while (left <= right) { int mid...原创 2018-10-06 16:05:17 · 144 阅读 · 0 评论 -
循环赛日程安排问题
设有n=2k个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次;(2)每个选手一天只能赛一次。 按此要求,可将比赛日程表设计成一个 n 行n-1列的二维表,其中,第 i 行第 j 列表示和第 i 个选手在第 j 天比赛的选手。按照分治的策略,可将所有参赛的选手分为两部分,n=2k个选手的比赛日程表就可以通过为n/...原创 2018-10-06 17:00:25 · 3553 阅读 · 0 评论 -
n皇后问题
八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。#include<stdio.h>#include <cmath>using name...原创 2018-10-31 16:50:46 · 101 阅读 · 0 评论 -
生成子集(Java)
package suanfa;public class ziji { public static void main(String[] args) { int str[] = { 1, 2, 3 }; int length = 1 << str.length; for (int i = 0; i < length; i++) { print(str, i...原创 2018-09-11 21:00:20 · 350 阅读 · 0 评论