自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 数组反转后续:一定什么时候都要反转吗?

一定什么时候都要反转吗? 答案是不用的。 我在此出一道题目:输入一个数组,把数组中的元素倒序输出。 当然,你可一选择思路1:把数组反转,再输出。 但是,反转实际上是完全不必要的。只要按照反序输出即可。 在大数据量的情况下,反转数组的时间不是一个小数目。有可能因此就TLE。

2012-06-30 16:39:04 432

原创 数组反转(下)

我在数组反转(上)中已经提到了样例程序。现在我们就要实现。 首先来说头文件。其实在样例程序中我最初是不打算使用头文件的。但是因为不用头文件,实现函数的时候就必须算好次序,很烦,因此我就使用头文件了。头文件中定义了我们要用的几个函数。 #ifndef reversingArray_main_h #define reversingArray_main_h void pushToStack(in

2012-06-30 16:36:18 375

原创 数组反转(中)

好了。我们这一次要用栈。 栈是先进后出的。如果我们把一些元素(在这里况且设为Q)放入栈,然后不停地出栈,直到栈空了为止。出来的顺序一定是反的。 所以呢?可以利用本性质来进行解决。 第一步:定义“栈”这种数据类型(我是用C语言实现的,C++中有stack,可以少打几行代码) typedef struct stack { int data[10]; int top; }REVS

2012-06-30 16:26:34 378

原创 数组反转(上)

有的时候,我们需要对数组反转。为了实现反转,我们可以用两种办法:   (1) 交换法: 思路:首尾配好,然后每一对每一对进行交换。 代码:(从样例程序中截取的) void reverse() { for (int i = 0;i < 5;++i) { int temp = array[i]; array[i] = arra

2012-06-30 16:21:07 420

原创 "aa\b"不等于“a"

有的时候,输出图省事,我们可能会用“\b"来删除行尾的空格。 实际上,是不可以的,比如说我写了一个测试程序: #include #include int main(int argc, const char * argv[]) { char * a = "aaa\b"; char * b = "aa"; printf("%s\n%s\n",a,b); if (

2012-05-30 16:57:42 849

原创 usaco中输出原来要换行

我在这里写一下,不仅提醒自己,而且提醒别人。 我一次刷题时,没有ac,但是和标准答案对起来,一模一样。我猜测是忘记换行了。改了一下,在输出的最后换了一个行,就ok了(别的没有改) 因此要小心了。

2012-05-30 16:50:15 326

原创 usaco之greedy gift givers

这道题我当年是用java做的,但是我的java代码不知道放在哪里了,只好说一下思路:      用一个数组记录每个人有多少钱,然后用一个hashtable来记录每个人的编号(编号和数组下标对应,用java做的,hashtable 干嘛不用?不过c/pascal的话就麻烦多了,其实用线性查找就ok了)     如果是给0个人,那么钱还是在自己手上,否则收到钱的每个人拥有[总钱数/ 给的人数],余

2012-05-29 17:02:08 467

原创 USACO之Friday the Thirteenth

这道题只要模拟就行了,求出每个月13日是星期几,然后汇总,输出即可(注意输出顺序!) 求每个月13日是星期几,可以用递推的方法。首先先记录上个月13日是多少天,再计算从上个月13日到这个月13日有几天,这样这个月13日是星期几就很好求出了,而且速度很快。 废话少说,代码上: #include #include #include static int currentDay = -18;

2012-05-29 16:58:48 410

原创 刷题IDE用什么才好

在这里我还是推荐Visual Studio。首先,XCODE 有的时候漏一个头文件也不会出现编译错误(我就吃亏过)。还有,DEV-CPP的调试太垃圾了。很难用。倒是Visual Studio的调试比较方便。

2012-04-29 17:34:16 2070

原创 继承

最近看了一下继承。现在我简单分析一下公有继承、私有继承、保护性继承的不同点 共有继承:public -> public,protected -> protected 私有继承:public -> private,protected -> private 保护性继承 public -> protected,protected -> protected

2012-04-29 17:23:54 263

原创 水题不水

有的时侯水题一点也不容易。往往水题里面隐藏着许多陷阱。我最近在刷OJ,被一道水题卡住了。      所以说,看到水题,不要想当然地放松,而是要认真分析。往往难的题目的陷阱少,简单的很多。        比如说Ural 1011,这道题看上去很简单。实际呢?当p = q = 10的时侯,正确答案为10(我看Discuss的)。但是,我就是做了很久都没有做对。      还有,p和q有可能是在

2012-04-29 17:15:37 284

原创 数值计算

思路: 找到最低级的运算符,然后分成左右两边进行计算,最后再根据这个运算符进行运算,把两边的结果加(减,乘,除)。 代码 // calculator.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; template class calc {

2012-04-15 20:49:16 299

原创 快速幂

快速幂用了分治的思想。首先,a^b = a^c * a^d(c + d = b),然后可以分成大致相等的两部分进行乘方,然后再合并。时间复杂度为O(n/2)      因为本人比较懒(不想做高精度乘法)就用java实现了。import java.io.*; import java.util.*; import java.math.*; public class fast {

2012-03-25 19:29:13 1083

原创 少包含了一个头文件的后果

我们有的时候会在头文件中包含一些类,但是当我们忘记包含的时候,会出现什么呢?当然是编译不通过。会说在标识符XXX前少了";"(其实加上去是不对),然后再说一堆错误。当我遇到这个错误时,我想了很久也没有想出来,后来才知道原来是少包含了一个头文件。 (以下是个人愚见)     程序开始时,有#include语句,然后如果这个类所属的头文件没有被包含的话,也就是说编译器不知道有这个类,当然会报错了。

2012-03-25 11:56:20 874

原创 圆形热点按钮的制作

说明: 绘制一个圆形的按钮,如果鼠标悬停在圆里面时,边框变成黑色,否则为白色。 过程: 思路如下:首先在对话框中绘制一个圆形,然后处理WM_MOUSEMOVE消息,计算出当前鼠标所停的点是否在圆里面。如果在,那么就在绘制时把边框变成黑色的。再处理WM_LBUTTONUP,如果鼠标在圆里面,就弹出一个对话框。 首先先定义类circle class circle : public CWn

2012-03-24 11:39:30 1028

原创 为什么能用位运算来交换数据

我们知道,用位运算能交换整型数据。这是实现代码。(注:下面的^都代表是异或而非乘方) int i,j; cin >> i >> j; i = i ^ j; j = j ^ i; i = i ^ j; 我们首先要知道三件事: 1 . a^b=b^a 证明过程很简单。因为0^0=0^0 0^1=1^0 1^0=0^1 1^1=1^1,又因为无论是a^b还是b^a,都是按位异或的,所以a

2012-03-18 18:27:17 540

原创 USACO制Your Ride Is Here

import java.io.*; import java.util.*; import java.math.*; public class ride { public static void main(String[] args)throws Exception{ // TODO Auto-generated method stub String str

2012-02-24 14:32:11 250

原创 逗你玩的运算符重载

1.运算符重载的格式为 operator ()     2 不能重载的运算符有:          1.三目元运算符,即?和:           2域运算符::           3类属关系运算符.           4sizeof运算符           5指针运算符*     使用运算符重载可以进行一些恶作剧,比如说下列代码#include u

2012-02-21 16:16:57 313

原创 C++ Primer Plus第九章学习笔记

1. 作用域     先贴一下我的代码: 1. print.h #ifndef PRINT_H_INCLUDED #define PRINT_H_INCLUDED void print(); #endif // PRINT_H_INCLUDED 2. main.cpp   #include #include "print.h" using namespace

2012-02-17 15:21:16 340

原创 用模板做A+B Problem时遇到的小问题

首先先贴上最后编译通过的解:     #include using namespace std; template int add(T1 addend1,T2 addend2) { return (addend1 + addend2); } int main() { int num1,num2; cin >> num1 >> num2;

2012-02-16 10:15:29 284

原创 如果printf中的转换说明数大于后面的参数的数量

写上篇文章的时候,里面有一段源代码。我在IDE里面写的时候,写了一句: printf("%d %d %d %d\n",num1,num2,num3);     想必各位马上就能发现,少了一个参数。     运行结果是:1 3 3 824     为什么呢?因为我少了一个参数,系统就用824代替了。     看来以后要小心,如果发现printf输出了一个看似随机数的东西而在监视中值是正

2012-01-20 10:52:40 429

原创 TCPL第二章学习笔记

第二章我就随便看了一看,觉得没第一章难。第一张的删除注释之类的程序(练习中的)还是有点难度的。      先说说++(某变量)和(某变量)++      我设这个变量为n,++n是先加后引用,而n++是先引用后加      先看下面代码:       #include int main(void) { int num1,num2,num3,base; base

2012-01-20 10:40:04 331

原创 TCPL这本书跨度蛮大的

粗粗翻了一下,感觉后面还是很难的。第一章的习题就很有难度了。看来要下苦功阅读这本书了。

2012-01-20 08:15:05 389

原创 说说我的学习计划

本人虽然可以说会一点C语言,但是看了一下TCPL,才明白自己会的只是一些皮毛。虽然程序能遍,但是比起TCPL中的程序,发现自己写的实在是不行。比如说我记得TCPL中有一句: for (fahr = LOWER; fahr 过去我一般会写 int temp = 1; for (temp = LOWER;temp<= UPPER;temp++) { fahr = temp *

2012-01-06 09:53:55 354

原创 The C programming language 学习笔记(一)

1. printf语句 printf语句,是用来进行输出的。格式是printf(char* format,...) (因为这是一个可变参数的函数,所以最后是...)   2、转义符 第一章里边出现过的有%d,%f,%3.0f,%6.1f之类的。现在我稍微说一下(权当复习) %d 输出10进制整数 %f  输出浮点数 %3.0f 输出浮点数,不保留小数点后的内容内容,至少占3个字符的位

2012-01-06 09:45:16 534

空空如也

空空如也

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

TA关注的人

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