自定义博客皮肤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 327

原创 数组反转(下)

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

2012-06-30 16:36:18 293

原创 数组反转(中)

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

2012-06-30 16:26:34 269

原创 数组反转(上)

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

2012-06-30 16:21:07 301

原创 "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 761

原创 usaco中输出原来要换行

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

2012-05-30 16:50:15 234

原创 usaco之greedy gift givers

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

2012-05-29 17:02:08 375

原创 USACO之Friday the Thirteenth

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

2012-05-29 16:58:48 306

原创 刷题IDE用什么才好

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

2012-04-29 17:34:16 1960 1

原创 继承

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

2012-04-29 17:23:54 189

原创 水题不水

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

2012-04-29 17:15:37 202

原创 数值计算

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

2012-04-15 20:49:16 219

原创 快速幂

快速幂用了分治的思想。首先,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 996

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

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

2012-03-25 11:56:20 698

原创 圆形热点按钮的制作

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

2012-03-24 11:39:30 905

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

我们知道,用位运算能交换整型数据。这是实现代码。(注:下面的^都代表是异或而非乘方)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 424

原创 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 165

原创 逗你玩的运算符重载

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

2012-02-21 16:16:57 235

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

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

2012-02-17 15:21:16 252

原创 用模板做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 212

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

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

2012-01-20 10:52:40 334

原创 TCPL第二章学习笔记

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

2012-01-20 10:40:04 243

原创 TCPL这本书跨度蛮大的

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

2012-01-20 08:15:05 318

原创 说说我的学习计划

本人虽然可以说会一点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 261

原创 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 422

空空如也

空空如也

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

TA关注的人

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