- 浏览: 18876 次
- 性别:
- 来自: 长沙
最新评论
文章列表
最长上升子序列问题:(动态规划)
用递归的方法时间复杂度为:O(n*2)
#include<stdio.h>
#include<string.h>
#define max 40000+5
int tmax[max];
int value[max];
int g=0;
int d(int h,int m)
{
if(h==m)
{
g++;
return value[h]=1;
}
if(value[h]==0) g++;
value[h]=1;
for(int j=h+1;j<=m;j++)
{
...
查找一个数组中最大的十个数据。
首先我写了一个快速排序的方法:
public class quickSort {
/**
* 以第一个数据为标准,小的放在右边,大的放在左边
* @param t 要排序的数据,默认从小到大排
* @param left 数据的下界
* @param right 数据的上届
*/
public static void QuickSort(int t[],int left,int right){
int i=left,j=right;
if(i>=j) return;//若有变的下标不小于左边,结束返回。
...
实现两个数字的转换大部分是用中间变量或相加再减的方法。但现在还有一种方法可以实现:
如果定义:int a=1;int b=2;
则可这样转换:
b=a^b;
a=a^b;
b=a^b;
这样a=2,b=1;为什么呢?
a的二进制为00000001,b为00000010;
a^b=00000011;(这里^符号为异或的意思即1^0=1,0^1=1,1^1=0,0^0=0);
将00000011赋给b,b=3;
a=b^a;这样的话那与a相同的部分便会成为0,剩下的便是原来的b的部分。
b=a^b;同理可证。
这样就互换了!!!!!!!!!!
随手写的一个用java实现的链表。
package JavaHash;
/**
* 这个类定义了链表中应有的属性和获取方法
* @author zyn
*
*/
public class Node {
private Node left;
private Node right;
private Object obj;
private int flag;
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
p ...
最近在搞acm不可避免要用到c/c++,在搞数据重排时学会了sscanf();与sprintf();
就是说一输入一个数字,把这个数字从大到小排一下再减去从小到大排列,新数据再重复,最后出现循环。
输入:1234
4321-1234=3087;
8730-378=8352;
8532-2358=6174;
7641-1467=6174;开始循环了;
输出:1234->3087->8352->6174->6174
#include<stdio.h>
#include<conio.h>
int get_next(int x)
{
int a,b,n ...
求解数列中最大和子数列问题
在一个数列中秋节此数列的最大子数列和,并标明字数列的起始位置,如有相等的输出第一个。
开始将这一个问题想得过于简单,不就是不断遍历,同时不断更新最大值的问题吗,于是便用到了两个for循环来解决这个问题。看代码:
#include<stdio.h>
#define maxn 100000+10
int t[maxn];
int main()
{
int n,d=1;
scanf("%d",&n);
while(n>0)
{
int a=0,max=0,sum=0,b,c;
scanf(" ...
[size=large][/size]解决大小写转换问题:
又做了一道题,解决的是大小写转换问题,用到了一个新的方法,toCharArry,用它来将一个字符串拆分成一个个的字符并保存到数组中,并一个个得用ascll码来判断大小写。明确一点小写是从97-122;大写是从65-90;。
import java.util.Scanner;
public class Main2 {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
String str,st=&qu ...
[size=xx-large][size=x-large][size=medium][size=x-small] 做acm的题经常会遇到很大的数据相互运算的问题,再用c/c++解决这些问题时通常会遇到许多的问题,需要自己去写代码处理这些大的数据。
在java中就提供了两个方法来解决大数据的运算,自己暂时只用到了BigInterger这个类。这是自己解决的第一个acm大数问题,纪念下。
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(S ...
Java集合框架
Java中集合类的定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类区别是:
Java.util.Set接口及其子类,提供的是一个无序的集合。Java.util.List 接口及其子类,提供的是一个有序的集合。
Java.util.Map接口及其子类,map提供的是一个无序的集合,其子类不一定。
示例:首先有一个student()类。
public class Student {
public Student(){}
public Student(String a, int t) {
...
文件及流
一FILE
File类在io包当中,可以通过File对象的方法创建文件对象,删除文件,列表目录下的文件,判断文件是目录还是正式文件。
File有几个很有用的构造器。
File(File p,String st)
File(String st)
File(String st,String str)
用这三个构造器实例化对象后才能用对象对文件进行一系列的操作。
1•Exists()判断File指向的文件是否存在。
2•getName()得到文件的名字(不带路径)。
3•isDirectory()判断对象指向的文件是否是目录 ...
1. java基础入门
a) 操作系统中配置java环境变量?
Windows下配置jdk环境,安装jdk。
b) 对类名、属性名、方法名以及常量名命名的时候需要注意什么?
对类名定义时,开头不能用数字,开头字母用大写,如使用几个名词组成,名词开头用大写,如用缩写则全部用大写,且类名尽量用名词。
属性名命名时注意一般用private限制,同时尽量用名词。
方法名命名使用小写,用名词。
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
c) 定义类名必须要和什么相同?
类名定义与要定义的实际物体一样。
d) Java编译和运行的命 ...
一 static 关键字的使用;
static关键字一般用于类中定义变量与方法。
1:静态变量。
在类中描述一个类的属性时可以用到静态变量。在变量前加上static关键字即可。
静态变量在可直接由对应的类 ...
通过编写画板程序,学到了许多东西,最重要的便是监听器的使用,图形的画法,以及队列的使用和抽象的类型<E>。
首先来谈一下监听器的问题,监听器在画板程序中起到了至关重要的作用,我想他在其他程序中也会起到重要作用,因为如果你想要知道在窗体上的动作,以及鼠标的动作,就必须要用到监听器,因此我认为监听器在任何程序中都扮演一个重要角色。
首先运用监听器可以得到鼠标点击按钮的内容,同时也能得到方框中的内容,从而根据此来做出判断,并进行下一步计划。而鼠标监听器则件事鼠标动作,按下,释放,点击,进入,出来。根据得到的坐标来进行下一步。因此监听器在软件开发中是十分重要的。
再一个在重写画法时的supe ...
[color=red][/color][/size][size=medium]一•类与对象
首先面向对象的编程语言,在定义一个类时,力图使其对事物的描述与现实世界一致。
其中,类中描述了对象的属性和行为(方法)。类是对象的模板,图纸。对象是类的具体化。
就像图纸与实物的关系,图纸规定了所要造的食物要具有什么样的零件,以及如何将这些零件组合起来。组合后所出来的真实事物就是对象,而不同的对象不同的就是所用零件的牌子等细节问题了,但大体上所用零件类型与组长方法一样。
二•有关继承的问题若干
有时候两个类在属性和方法上有许多共同之处。此时如果在两个类中将相同的东西再定义一遍就显得 ...