代码改变世界

随笔档案-2012年04月

归并排序(递归和非递归)和自然合并排序

2012-04-29 17:06 by youxin, 1571 阅读, 收藏,
摘要: 合并排序是一种分治法,实现上用了递归结构。过程是:先将待排序的元素分为两部分,一般是对等长度的两部分,称为左右L、R,先分别将L,R进行合并排序,然后将排序好的L、R合并在一起,则所有元素都有序。复杂度O(nlgn)。 #include<iostream> using namespace std; 阅读全文

快速排序

2012-04-27 21:54 by youxin, 273 阅读, 收藏,
摘要: 先看普通版本 #include<stdio.h> int Partition(int A[],int p,int r) { //最后一个r做pivot int tmp; int i=p-1; int j=p; for(j=p;j<=r-1;j++) if(A[j]<=A[r]) { i++; tmp 阅读全文

求 最大公约数和最小公倍数

2012-04-27 16:32 by youxin, 1108 阅读, 收藏,
摘要: 最大公约数(greatest common divisor,简写为gcd。最简单的是求2个整数的最大公约数。常见的算法是辗转相除法。辗转相除法,又称欧几里得算法。结果为非零的除数即为最大公约数。原理及其详细证明 设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,辗转相除法即是要证明gcd(a,b)=gcd(b,r)。 第一步:令c=gcd(a,b),则设a=mc,b=nc 第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c 第三步:根据第二步结果可知c也是r的因数 第四步:可以断定m-kn与n互素【否则,可设... 阅读全文

迭代法 详解

2012-04-27 12:32 by youxin, 6552 阅读, 收藏,
摘要: 迭代法(iteration)也称辗转法,是一种不断用变量的旧值递推出新值的解决问题的方法,迭代算法一般用于数值计算。累加,累乘都是迭代算法的基础应用。利用迭代法解题的步骤:1)确定迭代模型 根据问题描述,分析出前一个(或几个)值与下一个值的迭代关系数学模型。2)建立迭代关系式 递推数学模型一般是带下标的字母,算法设计中要将其转化为“循环不变式”----迭代关系式,迭代关系式就是一个直接或间接地不断由旧值递推出新值的表达式,存储新值的变量称为迭代变量。3)对迭代过程进行控制。 确定在什么时候结束迭代过程。迭代过程是通过小规模问题的解逐步求解大规模问题的解,表面上看正好与递归相反,但也找到了大规模 阅读全文

java中的组件重绘

2012-04-26 13:07 by youxin, 3860 阅读, 收藏,
摘要: 高手写的一篇文章:Who calls paintComponentWhen you subclassJComponentorJPanelto draw graphics, override thepaintComponent()method. This method is called because the user did something with the user interface that required redrawing, or your code has explicitly requested that it be redrawn.Called automaticall 阅读全文

C/C++产生随机数

2012-04-25 17:41 by youxin, 1083 阅读, 收藏,
摘要: C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。rand()函数产生的是一个随机整数。1 = rand() % 100; // v1 in the range 0 to 99v2 = rand() % 100 + 1; // v2 in the range ... 阅读全文

JFrame setDefaultLookAndFeelDecorated(true)

2012-04-23 18:07 by youxin, 2906 阅读, 收藏,
摘要: import javax.swing.*;public class F extends JFrame{JFrame f=new JFrame();f.setDefaultLookAndFeelDecorated(true);F() { f.setSize(300,200);f.setDefaultCloseOperation(3);f.setVisible(true);}public static void main(String[] args){new F();}}如何不继承jframe;import javax.swing.*;public class F{ JFrame f = n... 阅读全文

转:HTML操作 Swing Components

2012-04-22 21:25 by youxin, 477 阅读, 收藏,
摘要: One useful feature of Swing GUI’s many people overlook is the ability to use simple HTML tags within swing components. This tutorial assumes you know how to create a GUI in swing and add components. If you do not know how to do this, it is a good idea to read one of my previous tutorials.Lets first 阅读全文

JFrame添加组件的两种方式

2012-04-22 21:20 by youxin, 8436 阅读, 收藏,
摘要: 对JFrame添加组件有两种方式:1) 用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childCompontent)常分开来写Container container=getContentPanel();(隐式的this.getContentPanel()) ;得到jframe的内容面板以后只要把容器加到container就可以了。2) 建立一个JPanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:JPanel 阅读全文

转:文件操作之File类使用

2012-04-22 20:35 by youxin, 961 阅读, 收藏,
摘要: 绝对路径和相对路径绝对路径是指书写文件的完整路径,例如d:/java/Hello.java,该路径中包含文件的完整路径d:/java以及文件的全名Hello.java。使用该路径可以唯一的找到一个文件,不会产生歧义。但是使用绝对路径在表示文件时,受到的限制很大,且不能在不同的操作系统下运行,因为不同操作系统下绝对路径的表达形式存在不同。相对路径是指书写文件的部分路径,例如/test/Hello.java,该路径中只包含文件的部分路径/test和文件的全名Hello.java,部分路径是指当前路径下的子路径,例如当前程序在d:/abc下运行,则该文件的完整路径就是d:/abc/test。使用这种 阅读全文

java文件路径问题及Eclipse package,source folder,folder区别及相互转换

2012-04-22 18:23 by youxin, 3060 阅读, 收藏,
摘要: eclipse下,建立一个source folder(我建立的是folder,),名称为resource,调用时 为 "resource/bg.gif" ; //注意resource前面没有 /" 有/则错误eclipse的相对路径起始位置位于当前包的根目录,System.getProperty("user.dir");可以打印出根目录。另一种方法:在 src包下建立一个folder,名为res;调用方法如下:"src/res/bg.gif"在eclipse下,package,source folder,folder都是文件 阅读全文

java frame窗口设置背景图片

2012-04-22 16:42 by youxin, 949 阅读, 收藏,
摘要: 类 ImageIcon一个 Icon 接口的实现,它根据 Image 绘制 Icon。可使用 MediaTracker 预载根据 URL、文件名或字节数组创建的图像,以监视该图像的加载状态。ImageIcon(Imageimage)根据图像对象创建一个 ImageIcon。ImageIcon(Image image, String description) 根据图像创建一个 ImageIcon。ImageIcon(String filename) 根据指定的文件创建一个 ImageIcon。getLayeredPanepublic JLayeredPane getLayered... 阅读全文

java错误Cannot make a static reference to the non-static method

2012-04-22 15:41 by youxin, 6911 阅读, 收藏,
摘要: 转:我在一个类中写了一个public void getDate()方法和一个main方法,在main方法中直接调用getDate()方法,于是就出现了这个错误提示。后来实例化类,再用实例化的类调用getDate()方法就没问题了。在静态方法中,不能直接访问非静态成员(包括方法和变量)。因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。例如一个类 Student 表示学生,它有一个变量 String address。如果这个类没有被实例化,则它的 address 变量也就不存在。而非静态方法需要访问非静态变量,所以对非静态方法的访问也是针对某一个具体的对象的方法 阅读全文

java使JFrame的操作,居中 设置标题等

2012-04-22 15:38 by youxin, 9456 阅读, 收藏,
摘要: public static void main(String[] args) { JFrame frame = new JFrame("利用JFrame创建窗口"); // 创建指定标题的JFrame窗口对象 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭按钮的动作为退出窗口 frame.setSize(400, 300); // 设置窗口大小 Dimension displaySize = Toolkit.getDefaultToolkit().getScreen... 阅读全文

java制作的applet小型播放器

2012-04-22 14:14 by youxin, 666 阅读, 收藏,
摘要: import java.applet.Applet;import java.applet.AudioClip;import java.awt.Button;import java.awt.Choice;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class AudioChoiceTest extends Applet implements ActionListener{ //程序中声音名字 public final String... 阅读全文

java中URL和File的相互转化

2012-04-22 00:07 by youxin, 23139 阅读, 收藏,
摘要: URL用于网络,所以带有明显的protocol,而且对于中文及符号支持的很不好。File就是我们平常系统中的文件路径了,对于中文及符号都支持,但是已经没有protocol了。所以,虽然两者都可以表示文件路径,但是却不能混用了。URL to File:URL url=……;File file=new File(url.toURI()); 或file=new File(url.getFile());File to URL:File file=……;URL url=file.toURL(); A file object is used to a give a filename. Creatin... 阅读全文

把资源文件夹导入到eclipse中

2012-04-21 23:55 by youxin, 1907 阅读, 收藏,
摘要: 在项目上点击properties,选择import,再选general=>file system,选择相应的文件即可。还可以这样,new 新建一个folder,在复制你要导入的文件,直接粘贴在包中,太方便了。(这个功能很强大) 阅读全文

java 播放声音

2012-04-21 22:45 by youxin, 3115 阅读, 收藏,
摘要: 方法一:public interface AudioClipAudioClip接口是用于播放音频剪辑的简单抽象。多个AudioClip项能够同时播放,得到的声音混合在一起可产生合成声音。方法摘要voidloop()以循环方式开始播放此音频剪辑。voidplay()开始播放此音频剪辑。voidstop()停止播放此音频剪辑。注意play:开始播放此音频剪辑。每次调用此方法时,剪辑都从头开始重新播放类 Appletapplet 是一种不能单独运行但可嵌入在其他应用程序中的小程序。Applet类必须是任何嵌入 Web 页或可用 Java Applet Viewer 查看的 applet 的超类。Ap 阅读全文

Java3D 运行及开发环境

2012-04-21 14:27 by youxin, 1816 阅读, 收藏,
摘要: 1,现在java3D sdk,http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#java3d-1.5.1-oth-JPR测试代码import com.sun.j3d.utils.universe.SimpleUniverse;import com.sun.j3d.utils.geometry.ColorCube;import com.sun.j3d.utils.geometry.Sphere;import javax.med 阅读全文

关于eclipse编译一个工程多个main函数

2012-04-21 11:10 by youxin, 1494 阅读, 收藏,
摘要: eclipse写java程序往往不需要编译整个工程,直接run as就行。不过编译C的时候却需要编译整个工程,对于在eclipse写一些测试程序或者练习程序的人来说确实是个麻烦,因为写了不少测试或者练习程序都包含main函数,这样编译要出错的,没办法,只好将其他文件里的main都注释掉,有的人用//,有的人用/**/,用后面的又有了麻烦,如果main函数里用过这样的注释了,又发生错误,思来想去,我决定把暂时不用的c文件后缀改掉,随便怎么该,我直接在后面加个点,这样编译工程就不会全部编译了。而下次要用的时候只需要改下名字就行eclipse编译时排除指定的文件或文件夹eclipse在编译源文件.. 阅读全文

java编译错误No enclosing instance of type TestFrame is accessible. Must qualify the allocation with an enclosing instance of type TestFrame (e.g. x.new A(

2012-04-21 10:26 by youxin, 3056 阅读, 收藏,
摘要: No enclosing instance of type XX is accessible. Must qualify the allocation with an enclosing instance of type TestFrame (e.g. x.new A() where x is an instance of XX). 这是因为AA是一个动态的内部类,创建这样的对象必须有实例与之对应,程序是在静态方法中直接调用动态内部类会报这样错误。 这样的错误好比类中的静态方法不能直接调用动态方法。可以把该内部类声明为static。或者不要在静态方法中调用。那么为啥非静态方法不能调用动态... 阅读全文

java Gui初识

2012-04-21 10:12 by youxin, 660 阅读, 收藏,
摘要: java Gui初识主要有两类:AWT 和Swing类库 AWT 在java.awt包,swing 在javax.swing包中AWT是早期的,可以提供基本的gui,swing则更加全面。包括了awt中具有的所有组件。并且提供了更加丰富的功能和部件。但swing会用到许多awt中的许知识。swing组件都以J开头.组件:文本框,按钮,列表框,对话框等。我们称之为gui组件。java都提供了对应的java组件类。这些组件类都是java.awt.Component的直接或间接子类。对于众多的gui组件,根据其作用分为两大类:基本组件(下面就全部简称为组件)和容器。组件又被称为构件。在上面不能容纳其 阅读全文

Eclipse中java项目的打包

2012-04-21 01:39 by youxin, 550 阅读, 收藏,
摘要: 总体思路是先打成jar再把jar打成exe。主要看1.3和2.3里的内容就可以了。1.将项目打成jar:1.1 要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar。经过尝试后,我不推荐用Ant打包,因为要自己编写xml脚本语言,还要增加一些外部的jar,所以我打了好几次都没打成。1.2 在这里介绍两种方法生成jar,第一种是用Eclpise的Export功能。在要打包的项目上击右键,选择Export,在窗口中选择Java里的JAR file。Next后的窗口中已经自动选好了要打包的项目,用户可以点击加号查看项目里被打 阅读全文

Java建立JProgressBar

2012-04-20 16:46 by youxin, 797 阅读, 收藏,
摘要: 设置JProgressbar主要有以下几个点:jpb.setMaximum(100);//设置最大值jpb.setMinimum(0);//设置最小值jpb.setValue(0);//设置初始值jpb.setStringPainted(true);//设置进度条上是否显示进度具体进度如50%jpb.setPreferredSize(new Dimension(400,50));设置大小,注意不是setsize还有就是他有一个ChangeListener事件,可以监听进度条的变化。这是我再百度上看到的那个人得问题,和我的差不多。//如下程序,在运行的时候,本应该进度从0显示到9(每0.1秒进度 阅读全文

java 2中创建线程方法

2012-04-20 16:37 by youxin, 562 阅读, 收藏,
摘要: TheRunnableinterface should be implemented by any class whose instances are intended to be executed by a thread. The class must define a method of no arguments calledrun.This interface is designed to provide a common protocol for objects that wish to execute code while they are active. For example,R 阅读全文

动态规划基本思想

2012-04-19 23:04 by youxin, 1783 阅读, 收藏,
摘要: 动态规划与贪心策略类似,将一个问题的解决方案视为一系列决策的结果。不同的是,贪心算法每采用一次贪心选择便做出一个不可撤回的决策,而在动态规划中,还要考察每个最优决策序列中是否包含一个最优决策自序列。使用动态规划时,所求问题应具有以下两种性质。 1.最优子结构性质 所求问题的最优子结构性质是采用动态规划算法的条件之一,这种性质又被称为最优化原理。动态规划方法采用最优化原理来建立用于计算最优解的递归式。所谓最优化原理即不管前面的策略如何,此后的决策必须是基于当前状态(由上一次决策产生)的最优决策。由于对于有些问题的某些递归式来说并不一定能保证最优原则,因此在求解问题时有必要对它进行验证。若不... 阅读全文

动态规划之装配线调度问题

2012-04-19 22:54 by youxin, 1772 阅读, 收藏,
摘要: 一、问题描述 装配线调度问题如下: Colonel汽车公司在有两条装配线的工厂内生产汽车,一个汽车底盘在进入每一条装配线后,在每个装配站会在汽车底盘上安装不同的部件,最后完成的汽车从装配线的末端离开。如下图1所示。每一条装配线上有n个装配站,编号为j=1,2,...,n,将装配线i(i为1或2)的第j个装配站表示为S(i,j)。装配线1的第j个站S(1,j)和装配线2的第j个站S(2,j)执行相同的功能。然而这些装配站是在不同的时间建造的,并且采用了不同的技术,因此,每个站上完成装配所需要的时间也不相同,即使是在两条装配线上相同位置的装配站也是这样。把每个装配站上所需要的装配时间记为a(i.. 阅读全文

使用文件来输入输出

2012-04-19 16:29 by youxin, 721 阅读, 收藏,
摘要: 初学C语言用的方法:文件指针来操作。首先我们需要定义文件指针,为了方便我们不妨定义2个,一个fp1用作输入文件指针,另一个fp2用作输出文件指针。FILE *fp1,*fp2;用fopen打开文件fp1=fopen("test.txt","r"); //输入文件,以只读方式打开fp2=fopen("testOut.text","w"); //输出文件,以写的方式打开ifscanf(fp1,"%d",&x); //从文件中输入fprintf(fp2,"%d",x); / 阅读全文

dreamweaver cs5快捷键

2012-04-18 19:11 by youxin, 546 阅读, 收藏,
摘要: 文件菜单 新建文档 Ctrl+N 打开一个 HTML文件 Ctrl+O或者将文件从[文件管理器]或[站点]窗口拖动到[文档]窗口中 在框架中打开 Ctrl+Shift+O 关闭 Ctrl+W 保存 Ctrl+S 另存为 Ctrl+Shift+S 检查链接 Shift + F8 退出 Ctrl+Q编辑菜单 撤消 Ctrl+Z 重复 Ctrl+Y 或 Ctrl+Shift+Z 剪切 Ctrl+X 或Shift+Del 拷贝 Ctrl+C 或Ctrl+Ins 粘贴 Ctrl+V 或Shift+Ins 清除 Delete 全选 Ctrl+A 选择父标签 Ctrl+Shi... 阅读全文

Adobe dreamweaver 5.5安装过程

2012-04-18 11:23 by youxin, 464 阅读, 收藏,
摘要: 1,下载安装包,去官方下载trial http://trials2.adobe.com/dlm/AdobeProducts/DRWV/11_5/win32/Dreamweaver_11_5_LS3.exe2. 点击运行,会自动解压缩,我在解压缩过程中出现了问题,提示说:解压缩文档出现问题就退出,是我以前装的dreamweaver 8没 卸载干净,把以前的全部卸载就可以解压缩了。解压缩和提取文件完成快要安装时出现提示:安装程序检测到计算机重新启动可能出于挂起状态。在网上搜了下解决办法:1.运行 regedit 打开注册表编辑器。2.依次展开HKEY_LOCAL_MACHINE\SY... 阅读全文

转:VS后缀名详解

2012-04-17 11:14 by youxin, 415 阅读, 收藏,
摘要: .sln:解决方案文件,为解决方案资源管理器提供显示管理文件的图形接口所需的信息。.csproj:项目文件,创建应用程序所需的引用、数据连接、文件夹和文件的信息。.aspx:Web 窗体页由两部分组成:视觉元素(HTML、服务器控件和静态文本)和该页的编程逻辑。Visual Studio 将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。.ascx:ASP.NET的用户控件(也叫做“pagelets”),是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了HTML、代码和其他Web或者用户控件的组合,并在 阅读全文

c++ pair类型

2012-04-17 10:58 by youxin, 2492 阅读, 收藏,
摘要: pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。pair的定义 (头文件为utility)template <class T1, class T2> struct pair;Pair of valuesThis class couples together a pair 阅读全文

转:c++ typedef用法分类

2012-04-16 20:58 by youxin, 289 阅读, 收藏,
摘要: 用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb;//这多数不符合我们的意图,它只声明了一个指向字符变量的指针,和一个字符变量;以下则可行:typedef char* PCHAR;PCHAR pa, pb; 用途二:用在旧的C代码中,帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为:struct结构名对象名,如:struct tagPOINT1{int x;int y;};struct tagPOINT1 p1;而在C++中,则可以直接写:结构名对象名,即:tagPOINT1 p1;.. 阅读全文

转:c++ typedef关键字

2012-04-16 20:48 by youxin, 520 阅读, 收藏,
摘要: typedef是一种特殊的声明方式,不过它与普通声明的含义大不相同。普通声明的主角是“变量”,它或是创建一个新变量或是对外文件变量使用前的声明;而typedef声明的主角则是“类型”,通过这个声明对一种数据类型引入新的名字。从引入新名字这个角度来说,typedef声明又和宏定义有些相似:用新名字代替已有的名字。接下来的叙述会看到这两者之间的区别。typedef是特殊的 正如一开始所说的那样,typedef是特殊的声明。最常见以及常用的方式如下:1 /* 代码段1 */2 struct stuinfo3 {4 char id[20];5 char name[20];6 ... 阅读全文

c++函数作为参数传递

2012-04-16 20:33 by youxin, 18074 阅读, 收藏,
摘要: 把函数作为参数传递,常用的方法之一是用typedef定义一个函数指针。#include<iostream>using namespace std;typedef int (*pf)(int,int); //此种方式最容易理解,定义了一个函数指针类型;函数名就是指针。int f(pf p,int a,int b){ return p(a,b);}int add(int a,int b){ return a+b;}int main(){ cout<<f(add,1,2)<<endl;//3}还可以这样:#include<iostream>using 阅读全文

c++ vector.clear()

2012-04-16 18:51 by youxin, 712 阅读, 收藏,
摘要: vector::clearvoid clear ( );Clear content 清除全部的内容All the elements of the vector are dropped: their destructors are called, and then they are removed from thevectorcontainer, leaving the container with asizeof0.// clearing vectors#include <iostream>#include <vector>using namespace std;int 阅读全文

c++ 流的clear 与sync

2012-04-16 18:26 by youxin, 1528 阅读, 收藏,
摘要: 先看函数原型:ios::clearvoid clear ( iostate state = goodbit );Set error state flagsSets a new value for theerror control state.All the bits in thecontrol stateare replaced by the new ones; The value existing before the call has no effect.If the function is called withgoodbitas argument (which is the defau 阅读全文

C++ copy 函数

2012-04-16 17:18 by youxin, 10198 阅读, 收藏,
摘要: 先看下面的一段代码: vector<int> u(10,100); vector<int> v; copy(u.begin(),u.end(),v.begin()); for(vector<int>::iterator it=v.begin();it!=v.end();it++) { cout<<*it<<ends; }运行错误! 功能很简单,把vector u复制给v,但运行异常。为什么? vector<int> v;定义时定义时没有分配空间,copy不成功。应改为vector<int> v(u.size() 阅读全文

C++ 各种排序算法的区别

2012-04-15 21:55 by youxin, 543 阅读, 收藏,
摘要: 一、partition 算法可以把满足特定条件的元素放在区间的前部,并且返回一个迭代器,指向第一个不满足条件的元素。例如:我们要找出一个班级中成绩大于60分的学生,那么我们应该这样做。bool IsPass(int a){ return a>=60;}vector<int>::iterator Pass = partition(record.begin(),record.end(),IsPass);在此调用后,所有分数大于60分的学生都被放在record.begin()到Pass(不包括pass)之间,而分数小于60分的学生都被放在Pass到record.end()之间。2. 阅读全文

c++计算程序运行时间

2012-04-15 15:29 by youxin, 2535 阅读, 收藏,
摘要: C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: clock_t clock( void ); 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对 它的定义: #ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_... 阅读全文

c++ rbegin() 和rend()

2012-04-15 14:15 by youxin, 1961 阅读, 收藏,
摘要: 看下面的一段代码: for(vector<string>::iterator it=vec.rbegin();it!=vec.rend();it--) { cout<<*it<<ends; }编译有错,为什么?rbegin() rend()的返回类型不是vector<string>::iterator ,而是reverse_iterator; reverse_iterator rbegin();const_reverse_iterator rbegin() const;Return reverse iterator to reverse begi 阅读全文

fibonacci数的矩阵乘法

2012-04-15 02:01 by youxin, 401 阅读, 收藏,
摘要: 斐波那契数列1,1,2,3,5,8,13…….有如下定义F(n)=f(n-1)+f(n-2)F(1)=1F(2)=1对于以下矩阵乘法[F(n+1)]=[1 0][F(n) ][ F(n)]=[1 0][F(n-1)] 结果 F(n+1)=F(n)+F(n-1) F(n)=F(n) 设[ 1 1] [ 1 0]为Af(n)=Af(n-1)=A^n-1f(1)f(1)可以表示成[ 1 1] [ 1 0] 所以F[n] = A^n 还有另外一种形式:( F(n+1) F(n) F(n) F(n-1) ) = A^n;先看自己写的简单易懂的代码:#i... 阅读全文

hdc fibonacci number 1568

2012-04-14 20:47 by youxin, 425 阅读, 收藏,
摘要: hdc1568Problem Description2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。接下来,CodeStar决定要考考他,于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。所以规定超过4位的只要说出前4位就可以了,可是CodeStar自己又记不住。于是他决定编写一个程序来测验zouyu说的是否正确。Input输入若干数字n(0 <= n <= 100000000),每个数字一行。读到 阅读全文

多种方式求fibonacci数列

2012-04-14 17:14 by youxin, 473 阅读, 收藏,
摘要: 方法如下:/*f[1]=1;f[2]=1; f[n]=f[n-2]+f[n-1] ;*/#includeusing namespace std;int fibonacci(int n){ int *f=new int[n+1];//第0个元素不放 f[1]=1; f[2]=1; for(int i=3;i>n; cout(3/2)^n-1;递归求解过程如下:第3种:迭代来求/*f[1]=1;f[2]=1; f[n]=f[n-2]+f[n-1] ;*/#includeusing namespace std;int fibonacci(int n){ int *... 阅读全文

杭电acm分类

2012-04-14 16:34 by youxin, 1353 阅读, 收藏,
摘要: 第一个分类版本:基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1196、1197、1201、1202、1205、1219、1234、1235、1236、1248、1266、1279、1282、1283、1302、1303、1323、1326、133 阅读全文

高精度整数去位取最小问题

2012-04-13 11:43 by youxin, 994 阅读, 收藏,
摘要: Description键盘输入一个高精度的正整数N,去掉其中任意M个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和M寻找一种方案使得剩下的数字组成的新数最小。输出组成的新的正整数。(不超过240位)输入数据均不需判错。如果去掉了某几个位后得到的新整数开头为0,保留0。Input本题有多组测试数据,每组测试数据占一行。一个高精度正整数N(N不超过240位)一个正整数M。(M为不大于N的长度的正整数)N,M由一个空格分开。Output新的正整数,每组数据的输出占一行。不要多余的空白.Sample Input456547 1 456547 2 456547 3 7773359 2 阅读全文

For在VC6.0和VS2010编译器下的作用域问题

2012-04-06 13:04 by youxin, 442 阅读, 收藏,
摘要: 根据c++标准,在for的初始语句中声明的变量,其作用范围是从它定义的位置开始,一直到for所带语句的作用域结束。 由于VC6.0对C++标准的支持性不是太好,导致了在for定义的变量在for外部仍可返回。看下面的代码: #include <iostream>using namespace std;int main(){ for(int i=0;i<5;i++) { } cout<<i<<endl; return 0;}在VC6.0上面运行正常,输出5;在vs2010显示错误:error C2065: “i”: 未声明的标识符; 阅读全文

用vector建立2D数组

2012-04-06 08:33 by youxin, 1053 阅读, 收藏,
摘要: vector< vector<int> > //一定要有空格,否则认为移位运算符。 vector<vector<int> > array(3) ,申请保存3个向量的vector,array[i]返回的是第i个向量,同理array[i][j]返回的是第i个向量的第j个元素。 问题到这里,你可能会得意的说:"我明白了,很简单吗!"。别急,还有一些细节问题:如下 vector< vector<int> > array2(3); array2[1][2] = 9; 我保证你的程序会segement failed 阅读全文

setprecision()与setiosflags()

2012-04-05 23:03 by youxin, 589 阅读, 收藏,
摘要: 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。如果与setiosnags(ios::scientific)合用,可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。#include <iostream> #include <iomanip> //要用到格式控制符 #includ 阅读全文

c++ ios_base类

2012-04-05 22:40 by youxin, 1315 阅读, 收藏,
摘要: ios_base is Base class with type-independent members for the standard stream classes(ios);其中有一个成员函数ios_base::flags 用来控制流的格式。fmtflags flags ( ) const; fmtflags flags ( fmtflags fmtfl );Get/set format flagsThe first syntax returns the current set of format flags set for the stream.The second syntax s. 阅读全文

c++设置左对齐

2012-04-03 22:32 by youxin, 4427 阅读, 收藏,
摘要: 方法一:cout.flags (ios::left);//设置对齐的标志位为左2. cout<<left 对齐选项:(left,rightorinternal).manip setw ( int n );默认右对齐setw(n) 设置固定宽度Set field widthSets the number of characters to be used as thefield widthfor the next insertion operation.smanip setfill ( char c );// setfill example#include <iostream&g 阅读全文

Error C2361: initialization of (identifier) is skipped by (default) label

2012-04-03 16:16 by youxin, 1144 阅读, 收藏,
摘要: 看下面一段代码:// C2361.cppvoid func( void ) { int x; switch (x) { case 0 : int i = 1; { int j = 1; } default : // C2361 error int k = 1; }}编译时会报错,Error C2361: initialization of (identifier) is skipped by (default) label,msdn解释是这样的,The initialization ofidentifiercan be skipped in... 阅读全文

画一个矩形的边界框

2012-04-03 15:32 by youxin, 553 阅读, 收藏,
摘要: 定义一个包含5个点(10个值)的数组,来画一个矩形的边界框,注意最后一个点与第一个点相同。现在,只需要使用MoveToEx移到第一个点,并对后面的点使用LineTo: int i; POINT apt[5] = {100, 100, 200, 100, 200, 200, 100, 200, 100, 100} ; MoveToEx(hDC,apt[0].x,apt[0].y,NULL); for(i=1;i<5;i++) { LineTo(hDC,apt[i].x,apt[i].y); }当您... 阅读全文

LineTo画网格

2012-04-03 14:55 by youxin, 484 阅读, 收藏,
摘要: The following code draws a grid in the client area of a window, spacing the lines 50pixels apart starting from theupper left corner. The variable hwnd is assumed to be a handle to the window, hdc is a handle to the devicecontext, and x and y are integers:下面的程序代码从窗口的左上角开始,在显示区域中画一个网格,线与线之间相隔50个图素,其中h 阅读全文

'GetDc' : undeclared identifier

2012-04-02 01:47 by youxin, 394 阅读, 收藏,
摘要: 在下面一段取得系统字体的宽度和高度时错误了: case WM_CREATE: static int cxChar, cyChar; HDC hdc; hdc=GetDC(hwnd); TEXTMETRIC tm; GetTextMetrics(hdc,&tm); cxChar=tm.tmAveCharWidth; cyChar=tm.tmHeight+tm.tmExternalLeading; //tmExterna... 阅读全文

设置VS visual studio

2012-04-01 14:16 by youxin, 4698 阅读, 收藏,
摘要: 如果你不喜欢白底黑字的颜色配置,可以更改vs2010所有的颜色(不仅仅是文本编辑器的背景颜色)。 在VS2010的菜单中的:工具 》扩展管理器 》联机库,在其中找到 Visual studio coloer theme editor 然后安装该库,这款扩展提供对Visual Studio 2010整 阅读全文