自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SKY的专栏

用代码思考问题

  • 博客(27)
  • 收藏
  • 关注

原创 HDOJ 1465 不容易系列之一 [全错排问题]

题目简单可描述为:n份信,没有一份装在自己对应的信封里,求总共有多少种排法?例如:n=3;2 3 13 1 2共有两种排法。 提示:欧拉全错排公式的简单应用,f(n)=n![1/2!-1/3!+1/4!+...+(-1)^n*1/n!]   (n>1) AC代码如下:编译环境:netbeans6.7(G++)#include using namesp

2009-11-24 15:21:00 1384

原创 HDOJ 1408 盐水的问题 [整体思维]

所谓整体思维:就是说把盐水的水滴数看作一个整体,根据每一滴水滴的容量,先算出总共的水滴总数n,然后再根据水滴总数n做分析。注意:初始容量vul和每一滴的容量d,都要用双精度浮点型double 代码如下:#include using namespace std;int main(){ double vul,d; int n,time1,time2; while

2009-11-17 21:21:00 828

原创 HDOJ 1407 测试你是否和LTC水平一样高 [暴力优化]

直接暴力3个for循环,但需要一定的优化。 1、s=sum; [TLE 1000MS]2、s=sqrt(sum); [AC 953MS]3、还可以继续优化: for(int y=x;ys&&flag;++y) for(int z=y;zs&&flag;++z) [AC 515MS] 代码如下:#include #inc

2009-11-16 16:04:00 799

原创 HDOJ 1405 The Last Practice [恶心题]

此题有两点很让人纠结:1、最后一个数字之后还有一个空格(题目没说清楚)2、在最后一组也就是-1之前不输出空行(这个有说,但此类格式很少见) 我自己写的那段代码:Output Limit Exceeded了5次 随后去杭电论坛看了一下,无意中发现一段很值得学习的代码,当然,先拿来AC了再说,然后在仔细学习。其中的for(ni=2;ni一句用得很妙,直接得出素数因子,而我之

2009-11-15 21:38:00 924

原创 HDOJ 1397 Goldbach's Conjecture [爱沙托散筛法求素数]

简单题,直接贴代码.代码如下:#include using namespace std;const int MaxSize=32767;bool flag[MaxSize];int pm[MaxSize];//存放素数//求素数的爱沙托散筛法void prime(){ int i,j,k; memset(flag,true,sizeof(fl

2009-11-15 19:47:00 853

原创 求一个串中出现的第一个最长可重叠重复子串 [后缀数组解法]

题目描述:求一个串中出现的第一个最长重复子串 采用顺序结构存储串,编写一个程序,求串s中出现的第一个最长重复子串的下标和长度。 求解思路:一、主要数据结构及涉及知识点核心结构:后缀数组其他涉及:string数据类型、vector容器[顺序存储]、map容器、STL

2009-11-02 22:00:00 4946

原创 HDOJ 1201 18岁生日 [常识]

 题目很水,但是我做得很纠结。 解题思路:生活常识,平年:365天,闰年:366(2月有29号)如果出生在2月29号,那么也就说出生那一年一定是闰年,通过简单证明可得:闰年+18=非闰年 提示:对大于等于3月和小与3月出生分类讨论。 AC代码: #include using namespace std;bool rn(int year){

2009-10-29 21:54:00 1090 1

原创 HDOJ 1163 Eddy's digital Roots [简单数论]

题目描述:求n^n次的digital root(数根),例如root(67)=6+7=root(13)=1+3=4;求解思路:现在分析一个问题,假设将十位数为a,个位数为b的一个整数表示为ab,则推导得ab*ab = (a*10+b)*(a*10+b) = 100*a*a+10*2*a*b+b*b根据上式可得:root(ab*ab) = a*a+2*a*b+b*b = (a

2009-10-28 16:09:00 2148 1

原创 HDOJ 1106 排序 [stable_sort]

求解思路:调用泛型算法stable_sort().注意几类特殊情况的考虑.如005555,0065500,00000,555000等. AC代码: #include #include #include #include #include using namespace std;bool isShorter(const string &s1

2009-10-28 13:55:00 1068

原创 HDOJ 1098 Ignatius's puzzle [数学归纳]

求解思路:f(x)=5*x^13+13*x^5+k*a*x;其中题中"f(x)|65"表示对于任意的整数x,f(x)都能被65整除.所以不难推断:f(x+1)|65也成立. f(x+1)=5*(x+1)^13+13*(x+1)^5+k*a*(x+1),根据二项式定理:(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)*b+C(n,2)a^(n-2)*b^2+...+

2009-10-28 13:32:00 1939 1

原创 HDOJ 1058 Humble Numbers [简单DP]

此题谨慎暴力,DP是正解。 #include #include using namespace std;int s[5843];int main(){ int a,b,c,d; a=b=c=d=1; for(int i=1;i<8;++i) s[i]=i; for(int i=8;i<5843;++i)

2009-10-28 13:28:00 1069

原创 HDOJ 1029 Ignatius and the Princess IV [map]

调用map容器,类似于单词统计。 #include #include using namespace std;int main(){ int n,x; while(cin>>n) { map num; for(int i=0;i<n;++i) { cin>>x;

2009-10-28 13:21:00 542

原创 HDOJ 1028 Ignatius and the Princess III [母函数]

求解思路:整数的拆分问题,并且可重复,则得出以下式子(1+x+x^2+x^3+...+x^n)(1+x^2+x^4+...)(1+x^3+x^6...)...把上面的母函数转化成代码就可以了。AC代码://母函数#include using namespace std;const int MaxSize=121;int c1[MaxSize]

2009-10-28 13:11:00 977

原创 HDOJ 2086 A1=? [简单归纳]

Problem Description有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.请编程计算A1 = ?Input输入包括多个测试实例。对于每个实例,首先是一个正整数n,(n Output对于每个测试实例,用一行输出所求得

2009-10-28 11:05:00 1312

原创 通讯录管理 iofstream

数据结构链表实验4 通讯录管理 By sky1.添加记录2.删除记录3.输出记录4.按姓名查找5.保存记录6.按ID排序7.清空记录8.退出Enter:  源码如下:#include#include#include#include#include#include#includeusing namespace s

2009-09-16 22:24:00 952

原创 HDOJ 2087 剪花布条 [KMP]

//题目描述:HDOJ 2087 剪花布条 //问题抽象:典型的字符串匹配问题//核心算法:KMP//时间复杂度:O(n+m)#include#includeusing namespace std;const int MaxSize=1000;//计算next[]值,kmp核心void GetNext(string t,int next[]){ int

2009-09-16 09:09:00 967

原创 IO:cin.clear() 和 cin.sync() 的区别

cin.clear是用来更改cin的状态标示符的,cin.sync是用来清除缓存区的数据流的。 如果标示符没有改变那么即使清除了数据流也无法输入。 所以两个要联合起来使用。 #include#includeusing namespace std;int main(){ int ival; while(1) { cin

2009-09-15 14:58:00 1369

原创 简洁之美 *dest++ = *source++

#includeusing namespace std;int main(){ int arr1[] = { 1,2,3,4,5 }; int *source = arr1; size_t sz = sizeof(arr1) / sizeof(*arr1);//求数组arr1中的元素个数 int *dest = new int[sz]; while(source !

2009-09-12 21:30:00 5126 3

原创 C语言课程设计—图书管理系统

这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念。   C源代码如下:#include#include#includestruct book{ char book_name[30]; int bianhao; double price; cha

2009-08-29 12:36:00 47261 17

原创 重返黑白时代:abc game for dos

这是本人的第一个游戏,原因是因为七夕将至,作为送GF的礼物,可是由于缺乏面向对象程序设计相关的知识,所以,只能凭借纯代码,在Visual C++2008环境下,编译生成在DOS下运行的.exe文件。 游戏很简单:开始后,屏幕上方会掉下各种随机的字母(A-Z),而每一个大的字母都是由其他随机的小的字母组成,这样做是纯粹为了搞混你眼睛,嘿嘿。你只要根据掉下来的大字母,在键盘上输入同样的

2009-08-25 20:30:00 1427 3

原创 回溯法

一、回溯法 的基本概念回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,还满足所有其他要求时,则继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的解。在回溯法中,放弃当前候选解,寻

2009-08-24 15:32:00 1370

原创 经典皇后问题

 题目描述:编写一个程序求解皇后问题:在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。 解法一:递归算法 设f(i,n)表示在n×n的方格棋盘上,已放置好第1个,...,第i-1个皇后,现要放置第i个,...,第n个皇后。放置前i个皇后的解法f(i,n)和放置前i+1个皇后的解法f(i+1,n)是相似的。求解皇后问题的递归模型如下。①f(i,

2009-08-23 20:57:00 1672

原创 递归法

一、递归法的基本概念在广义表、二叉树和AVL数的算法设计中大量的用到递归法,递归算法设计需要递归数据结构和递归运算。实际上,大量的数据都是递归定义,如正整数就是这样定义的:1是正整数,如果n是正整数,则n+1也是正整数。实数是由正整数导出的,所以实数等都是递归数据结构。递归算法通常有这样的特征:为求解规模为N的问题,设法将它分解成一些规模较小的问题,然后

2009-08-23 09:57:00 3493 1

原创 穷举法

一、穷举法的基本概念穷举法也称为枚举法(Exhaustive Attack method),,或称暴力破解法,又称为强力法(Brute-force method). 完全试凑法(complete trial-and –error method)它的基本思想是不重复、不遗漏地穷举穷举所有可能情况,或把信息条理化、系统化、或进行分类,寻找规律,引出信息,以便从中寻找满足条件的结果。

2009-08-22 11:43:00 9368

原创 文件操作简易代码[C语言]

C语言文件操作简易程序1.新建文件2.打开文件3.删除文件0.退出请选择:2主菜单->打开文件请输入文件名(filename.txt)或路径(c:/xxx/xxx.txt):123.txt该文件内容如下:zhangcong按1.追加 2.重写 3.返回主菜单  C代码实现如下: #include#includevoid

2009-08-21 23:15:00 1611

原创 迭代法

一,迭代法的基本概念:迭代法事一种常用算法设计方法。迭代式一个不断用新值取代变量的旧值,或由旧值递推出变量的新值的过程。迭代机制需要以下一些要素:①迭代表达式;②迭代变量;③迭代初值;④迭代终止条件。 当一个问题的求解过程能够由一个初值使用一个迭代表达式进行反复的迭代时,便可以用效率极高的重复程序描述,所以迭代也是用循环结构实现,只不过要重复

2009-08-21 19:42:00 15332 3

原创 HDOJ 2058 The sum problem [效率分析]

题目的意思并不难理解:输入两个整数M,NN, M( 1 譬如:Sample Input20 1050 300 0Sample Output[1,4][10,10][4,8][6,9][9,11][30,30]因为M,N的范围比较大,一般的算法很容易超时,所以在这里,时间效率尤其重要。方法一:回溯暴力求解

2009-08-19 21:41:00 2574 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除