
平常看书的小题目
Geek_sun
为梦想而努力。
展开
-
栈----判断是否为回文数列
//Geeksun 2017.11.20#include #include int main(){ int mid,n,i,next,top = 0; char str[100],s[100]; gets(str); n = strlen(str); mid = n / 2 - 1; for(i = 0;i原创 2017-11-20 23:27:59 · 738 阅读 · 0 评论 -
算法竞赛入门经典-例题3-5 环状序列
长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到。例如,图3-4的环状串 有10种表示:CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最小的称 为"最小表示"。输入一个长度为n(n≤100)的环状DNA串(只包含A、C、G、T这4种字符)的一种表 示法,你的任务是输出该环状串的最小表示。例如,CTCC的最小表示是 CCCT,CGAG...原创 2018-09-08 16:39:36 · 625 阅读 · 0 评论 -
算法竞赛入门经典-例题3-5 生成元
题目:如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求最小生成元。无解输出0。例如,n=216,121,2005时的解分别为198,0,1979。心得:1、数据很大,需要使用打表。2、学会了一种对数组进行初始化的新方式:memset(n,int a,sizeof(n))《包含在头文件string.h里》可以最快速地对数组进行初始化。代...原创 2018-09-08 15:55:26 · 574 阅读 · 0 评论 -
例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
实现一个经典"猜数字"游戏。 给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。输入包含多组数据。 每组输入第一行为序列长度n,第二行是答案序列,接下来是若干猜测序列。 猜测序列全0时该组数据结束。 n=0时输入结束。样例输入:4 13 5 51 1 2 34 3 3 56 5 5 16 1 3 51 3 5 50 0 ...原创 2018-09-04 17:42:38 · 415 阅读 · 0 评论 -
例题3-3 回文词(Palindromes,UVa401)
3-3 例题3-3 回文词(Palindromes,UVa401)输入一个字符串,判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓回文串,就是反转以后和原串相同,如abba和madam。所有镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符。在本题中,每个字符的镜像如图3-3所示(空白项表示该字符镜像后不能得到一个合法字符)。...原创 2018-09-04 14:32:33 · 310 阅读 · 0 评论 -
算法竞赛入门经典-竖式问题
C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。用法实例:#include <stdio.h>#include <math.h>int main(){ char str[80]; sprintf(str, "Pi 的值 = %f", M_PI...原创 2018-09-04 09:09:09 · 393 阅读 · 0 评论 -
最短网络——DFS解决
Description农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。 为了用最小的消费,他想铺设最短的光纤去连接所有的农场。 你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。Input该题含有多组测试数据。 第一行为M表示...原创 2018-06-03 12:03:54 · 382 阅读 · 0 评论 -
啊哈算法——求最少转机的次数
题意:小哼和小哈一起坐飞机旅游,他们现在位于1号城市,目标是5号城市,可是1号城市没有到5号城市直航,不过他们收集了很多航班信息,现在他们要找出转机次数最少的方案。第一行的5表示有5个城市(编号为1~5),7表示有7条航线,1表示起始城市,5表示目标城市,接下来的每行“a b”,表示a,b之间有航线,也就是a,b之间可以相互到达。样例:5 7 1 51 21 32 32 43 43 54 5#in...原创 2018-06-03 10:05:56 · 2754 阅读 · 0 评论 -
DFS走迷宫
Geeksun 2017.12.19#include <stdio.hint a[51][51],book[51][51],p,q,m,n,min = 999999999;//创建时横纵坐标多一个,因为要考虑到用户习惯,一般坐标从1开始,而不是0。void dfs(int x,int y,int step);int main(){ int i,j,startx,start原创 2017-12-19 16:29:43 · 467 阅读 · 0 评论 -
用数组模拟链表
//Geeksun 2017.11.28 0 : 26//此模拟链表并不完善,当增加的值为最小值时程序会出错,需加一条判断语句。#include int main(){ int data[101],right[101]; int i,t,n,len,flag = 0; scanf("%d",&n); for(i = 0;i原创 2017-11-28 00:28:23 · 282 阅读 · 0 评论 -
DFS全排列
//Geeksun 2017.12.04#include <iostream>#include <cstring>using namespace std;int visit[11],num[11];int n;void dfs(int length){ if(length > n) { for(int i = 1...原创 2017-12-04 20:03:20 · 178 阅读 · 1 评论 -
枚举 火柴等式总和
现手中有m(m注意:1、加号与等号各自需要2根火柴棍;2、如果A不等于B,则A+B=C与B+A=C视为不同的等式(三者均大于0);3、所有根火柴棍必须全都用上。思路: 24根除去4根还有20根,而数字1所需火柴棍最少,需2根。则三者中任一数不能超过1111。只需枚举三者。A中火柴棍数加上B中火柴棍数等于C中火柴棍数,若恰好等于m-4的话,则成功找原创 2017-12-04 17:42:42 · 335 阅读 · 0 评论 -
蛇形填数
在n*n方阵中填入1,2,3...,n*n,要求填成蛇形。例如,n=4时方阵为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4将操作模拟成一支笔,画出蛇形的形状。开始时笔在a[0][n - 1]处,顺时针画蛇,若碰见已经路过的点或是遇上边界则调转方向。代码为:#include <cstdio>#inclu...原创 2018-09-03 23:40:46 · 212 阅读 · 0 评论