博文

Java中的String数据类型(2009-10-11 21:27:00)

摘要:      Java中的String数据类型    1. 首先String不属于8种基本数据类型,String是一个对象。   因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。   2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;   3. String str=”kvill”;
String str=new String (“kvill”);的区别:   在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。   常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。   看例1: String s0=”kvill”;
String s1=”kvill”;
String s2=”kv” + “ill”;
System.out.println( s0==s1 );
System.out.println( s0==s2 ); 
  结果为: true
true 
  首先,我们要知道Java会确保一个字符串常量只有一个拷贝。   因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。   所以我们得出s0==s1==s2;   用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。   看例2: String s0=”kvill”;
String s1=new String(”kvill”);
String s2=”kv” + new String(“ill”);
Sys......

阅读全文(1164) | 评论:0

点击一个Button显示设定的信息的函数(2009-10-08 14:08:00)

摘要:    SetWindowText函数可以实现。 void CMFC_xoDlg::OnBnClickedButton9()
{
 // TODO: 在此添加控件通知处理程序代码
 CWnd* pWnd = GetDlgItem(IDC_BUTTON9);
    pWnd->SetWindowText(_T("X"));
}......

阅读全文(1409) | 评论:0

极其脑残的XO游戏程序(2009-09-29 15:16:00)

摘要:  #include<iostream>
//#include<cstdlib>
using namespace std;
void main()
{
 char chess[3][3]={'1','2','3', '4','5','6', '7','8','9'};
 int i,j;
 
 char input1,input2;
 cout<<"The  chess board is as follows(We use numbers to denote the chess):"<<endl;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++){
   cout<<chess[i][j]<<" ";
   if((j+1)%3==0)
    cout<<endl;
  }
////////////////////////////////////////////////////////
 // start game:
 for(int k=0;k<5;k++){
    // input the chess of player1:
 cout<<"input the number represent the position where player1 want to set the chess:"<<endl;
 cin>>input1;
 for(i=0;i<3;i++)
  for(j=0;j<3;j++){
   if(input1==chess[i][j])
  &nbs......

阅读全文(1269) | 评论:0

PKU ACM 1128 ???(2009-09-27 20:29:00)

摘要:  1128这道题里面的第二行的帧: EEEEEE.. ........ ........ ..BBBB.. .C.C.... 组合之后为什么会是ECBCBB..这样啊??? 不是要按照字母序列排序吗?不是ECBBBB.. 吗???  ......

阅读全文(1625) | 评论:1

括号序列(2009-09-26 00:52:00)

摘要:括号序列
【问题描述】
       定义如下规则序列(字符串): 1.空序列是规则序列; 2.如果S是规则序列,那么(S)和[S]也是规则序列; 3.如果A和B都是规则序列,那么AB也是规则序列。
       例如,下面的字符串都是规则序列: (),[],(()),([]),()[],()[()]
       而以下几个则不是: (,[,],)(,()),([() 现在,给你一些由‘(’,‘)’,‘[’,‘]’构成的序列,你要做的,是找出一个最短规则序列,使得给你的那个序列是你给出的规则序列的子列。(对于序列a1,a2,…, 和序列bl,b2,…, ,如果存在一组下标1≤i1<i2<…< ≤m,使得aj= 对一切1≤j≤n成立,那么a1,a2…, 就叫做b1,b2,…, 的子列。
【输入】
       输入文件仅一行,全部由‘(’,‘)’,‘]’,‘]’组成,没有其他字符,长度不超过100。
【输出】
       输出文件也仅有一行,全部由‘(’,‘)’,‘]’,‘]’组成,没有其他字符,把你找到的规则序列输出即可。因为规则序列可能不止一个,因此要求输出的规则序列中嵌套的层数尽可能地少。
【样例】
bracket.in
([()
bracket.out
()[]()                          {最多的嵌套层数为1,如层数为2时的一种为()[()]}     【算法分析】
    对于输入的括号序列字符串,从左向右进行查......

阅读全文(4363) | 评论:1

显示日历(2009-09-24 19:04:00)

摘要:      import javax.swing.JOptionPane;
public class PrintCalendar {
 public static void main(String[] args)
 {
  String stringYear = JOptionPane.showInputDialog("Input the year(e.g. 2009):");
  int year = Integer.parseInt(stringYear);
  String stringMonth = JOptionPane.showInputDialog("Input the month:");
  int month = Integer.parseInt(stringMonth);
  
  printMonth(year,month);
 }
 
 static void printMonth(int year,int month)
 {
  printMonthTitle(year,month);
  printMonthBody(year,month);
 }
 
 static void printMonthTitle(int year,int month)
 {
  System.out.println("       "+getMonthName(month)+" "+year);
  System.out.println("------------------------------");
  System.out.println(" Sun Mon Tue Wed Thu Fri Sat ");
......

阅读全文(1304) | 评论:0

动态规划--维基百科(2009-09-17 19:33:00)

摘要:  http://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92   动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。比较著名的应用实例有:求解最短路径问题,背包问题,项目管理,网络流优化等。
目录 [隐藏]
1 概述
2 步骤
3 实例
3.1 斐波那契数列
3.2 背包问题
4 使用动态规划的算法
5 外部链接
[编辑] 概述
动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题。为了避免多次解决这些子问题,它们的结果都逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。
动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。
[编辑] 步骤
最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。
[编辑] 实例
[编辑] 斐波那契数列
计算斐波那契数列的一个最基础的算法是,直接按照定义计算:
   function fib(n)
       if n = 0 or n = 1
   ......

阅读全文(1686) | 评论:0

求数组的子数组的的元素之和的最大值3(2009-09-17 19:19:00)

摘要:    下面我们来分析一下最大子段和的子结构,令b[j]表示从a[0]~a[j]的最大子段和,b[j]的当前值只有两种情况,(1) 最大子段一直连续到a[j] (2) 以a[j]为起点的子段,不知有没有读者注意到还有一种情况,那就是最大字段没有包含a[j],如果没有包含a[j]的话,那么在算b[j]之前的时候我们已经算出来了,注意我们只是算到位置为j的地方,所以最大子断在a[j]后面的情况我们可以暂时不考虑。
由此我们得出b[j]的状态转移方程为:b[j]=max{b[j-1]+a[j],a[j]},
所求的最大子断和为max{b[j],0<=j<n}。进一步我们可以将b[]数组用一个变量代替。
得出的算法如下:
    int maxSubArray(int n,int a[])
    {
        int b=0,sum=-10000000;
        for(int i=0;i<n;i++)
        {
             if(b>0) b+=a[i];
             else b=a[i];
             if(b>sum) sum=b; 
        }
        return sum;
&......

阅读全文(1721) | 评论:2

求数组的子数组的的元素之和的最大值2(2009-09-17 16:36:00)

摘要:    第二种方法-带记忆的递推法:
   cumarr[0]=a[0]
   for i=1 to n      //首先生成一些部分和
   {
        cumarr[i]=cumarr[i-1]+a[i];      
   }    maxsofar=0
   for i=0 to n
   {
       for j=i to n     //下面通过已有的和递推
       {
           sum=cumarr[j]-cumarr[i-1]
           if(sum>maxsofar)
               maxsofar=sum
       }
   }    ......

阅读全文(1337) | 评论:0

求数组的子数组的的元素之和的最大值(2009-09-17 15:22:00)

摘要:   给定一个长度为n的一维数组a,请找出此数组的一个子数组,使得此子数组的和sum=a[i]+a[i+1]+……+a[j]最大 //算法一: #include<iostream>
using namespace std; int main()
{
 int a[10]={0};
 int max=0,i=0,j,k,temp=0;
 for(i=0;i<10;i++)
 {
  cin>>a[i];
 }
 max=a[0];
 for(i=0;i<10;i++)
 {
  for(j=i;j<10;j++)
  {
   for(k=i;k<=j;k++)
    temp+=a[k];
   max=(max>temp? max:temp);
   temp=0;
  }
 }
 cout<<max<<endl;  return 0;
}......

阅读全文(1418) | 评论:0