i++;
++i;

i--;
--i;

int a=5;
int b=a++;++放在后面,表示先使用a的值,a再加1
b=5,a=a+1,a=6

int c=5;
int d=++c;++放在前面,表示先将c+1,再将值赋给d
c=c+1,c=6,d=c,d=6

基础算法

/*(挑战题)定义一个二维数组,int[3][4],要求是循环输入12个整数,放入到数组中,然后使用嵌套循环找到这个数组中的最大值。
*/
import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[][] arr=new int[3][4];
for(int i=0;i<arr.length;i++){
System.out.println("请输入数");
for(int j=0;j<4;j++){

arr[i][j]=input.nextInt();
}

}
int max=arr[0][0];
for(int i=0;i<arr.length;i++){

for(int j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
}

}

}
System.out.print(max);
}
}

/*

6、(挑战题)定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。

*/
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int sum=0;

for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
sum++;
}
}

int[] brr=new int[sum];
int k=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
brr[k]=arr[i];
k++;
}
}

for(int i=0;i<brr.length;i++){
System.out.println(brr[i]);
}

}

}

//判断一个数是否为质数(素数,只能被1和本身整除的数叫质数)
import java.util.*;
public class ZhiShu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();//6
boolean flag=true;//假设这个数是质数
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println(t+"不是质数");
break;
}
}
if(flag==true){
System.out.println(t+"是质数");
}
}
}

/*

3、定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下:
java c# sql
第1名学生 89 79 98
第2名学生 99 80 100
第3名学生 79 99 87

*/

import java.util.*;

public class E{
public static void main(String[] args){
int[][] arr=new int[3][3];

Scanner input= new Scanner(System.in);

for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的java成绩");
arr[i][0]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的c#成绩");
arr[i][1]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的sql成绩");
arr[i][2]=input.nextInt();
}

System.out.println("\t\tjava\tc#\tsql");

for(int i=0;i<arr.length;i++){
System.out.print("第"+(i+1)+"个学生\t");
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}

/*

3.(挑战题)计算1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10=?。

*/

public class C{
public static void main(String[] args){
double sum=0;
for(int i=1;i<=10;i++){
sum=sum+1/(double)i;
}
System.out.println(sum);
}
}

public class E{
public static void main(String[] args){
/*int i=1;

while(i<=100){
System.out.println(i);
i++;
}
*/
/*
do{
System.out.println(i);
i++;
}while(i<=100);
*/

for(int i=1;i<=100;i++){
System.out.println(i);
}

}
}

public class H{
public static void main(String[] args){
for(;;){
System.out.println("I love you");
}
}

}

/*
题目:从1不断的累加,最多加到100,但如果你的累加结果
正好大于1000时,要求也结束这个循环。问这个时候正好加
到了几。
*/

public class J{
public static void main(String[] args){
/*int i=1;
int sum=0;
while(i<=100){
sum=sum+i;
if(sum>1000){
System.out.println("加到了"+i);
break;
}
i++;
}*/

int sum=0;
for(int i=1;i<=100;i++){
sum=sum+i;
if(sum>1000){
System.out.println("加到了"+i);
break;
}

}
}
}

/*
从1累加到100,但如果要累加的数据能被3整除,
并且也能被7整数,那么就不要累加这个数。最后输出结果。
*/

public class C{
public static void main(String[] ars){
int sum=0;
for(int i=1;i<=100;i++){
if(i%3==0&&i%7==0){
continue;
}
sum=sum+i;

}
System.out.println(sum);

}
}
/*
*******
*******
*******
*******
*******
*/

public class F{
public static void main(String[] args){
for(int i=1;i<=5;i++){//i控制行数
for(int j=1;j<=7;j++){//j控制列数
System.out.print("*");
}
System.out.println();
}
}

}
/*

*
***
*****
*******
*********
***********
*************

*/

public class G{
public static void main(String[] args){

int x=1;//把第一行的星星数写出来
for(int i=1;i<=7;i++){//控制 行数
for(int j=1;j<=x;j++){//控制星星的列数
System.out.print("*");
}
System.out.println();//换行
x=x+2;//把下一行要打的星星的个数算出来
}

}
}

/*

*
*
*
*
*
*
*
*

*/

public class H{
public static void main(String[] args){
int k=0;
int x=1;

for(int i=1;i<=8;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k++;

}
}
}

/*
*
**
***
****
*****
******
*******

*/

public class I{
public static void main(String[] args){
int k=6;
int x=1;
for(int i=1;i<=7;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k--;
x++;
}
}

}

/*

*
***
*****
*******
*********
***********

*/

public class J{
public static void main(String[] args){
int k=5;
int x=1;
for(int i=1;i<=6;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k--;
x+=2;//x=x+2;
}
}
}

/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
……
1*9=9 2*9=18 …… 9*9=81
*/

public class K{
public static void main(String[] args){
//int x=1;
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
//x++;
}
}
}

/*
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
*/

public class L{
public static void main(String[] args){
int k=5;
int x=1;

int kb=-1;
int xb=2;
for(int i=1;i<=11;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k=k+kb;
x=x+xb;
if(i==5){
kb=-kb;
xb=-xb;
}
}
}

}

/*

*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*

*/

public class M{
public static void main(String[] args){
int k=5;
int x=1;

int kb=-1;
int xb=2;
for(int i=1;i<=11;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
if(z!=1&&z!=x){
System.out.print(" ");
continue;
}
System.out.print("*");
}
System.out.println();
k=k+kb;
x=x+xb;
if(i==5){
kb=-kb;
xb=-xb;
}
}
}
}

/*
******
******
******
******

*/

public class B{
public static void main(String[] args){
int k=3;//第一行的空格数
int x=6;//第一行的星星数
for(int i=1;i<=4;i++){//外层循环的i控制行数
for(int j=1;j<=k;j++){
System.out.print(" ");//打完一行的空格
}
for(int z=1;z<=x;z++){
System.out.print("*");//打完一行的星星
}
System.out.println();
k--;

}
}
}

/*
输入某人成绩(百分制)。如成绩在90-100之间,则输出优秀,如成绩在80-89之间,则输出良好,如成绩在60-79之间,则输出及格,60分以下则输出不及格。提示:用switch语句实现。
*/

import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int t=a/10;

switch(t){
case 10:

case 9:
System.out.println("优秀");
break;

case 8:
System.out.println("良好");
break;

case 7:
case 6:
System.out.println("及格");
break;

default:
System.out.println("不及格");
break;

}

}
}

/*
2.输入任意一个整数,判断这个整数是不是质数?
*/

import java.util.*;
public class Zhishu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入1个整数");
int t=input.nextInt();
boolean flag=true;/*
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println("这个数不是质数");
}

}
if(flag==true){
System.out.println("这个数是质数");
}
*/
/*int c=0;
for(int i=1;i<=t;i++){

if(t%i==0){
c++;
}

}
if(c==2){
System.out.println("这个数是质数");
}*/

int j;
for(j=2;j<=t/2;j++) {
if(t%j==0) {
break;
}
}
if (j>t/2) {
System.out.println(""+t+"是素数");
}

}
}

import java.util.*;
public class G{
public static void main(String[] args){
//int[] arr={10,3,6,20,5};
Scanner input=new Scanner(System.in);

int[] arr=new int[5];

for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int max=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
}

}

//判断一个数是否为质数(素数,只能被1和本身整除的数叫质数)
import java.util.*;
public class ZhiShu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();//6
boolean flag=true;//假设这个数是质数
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println(t+"不是质数");
break;
}
}
if(flag==true){
System.out.println(t+"是质数");
}
}
}

//求数组的最大值
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);

int[] arr=new int[3];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}

int max=arr[0];
int min=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i];
}

}
System.out.println("最大值是"+max);
System.out.println("最小值是"+min);
}
}

//查找算法
import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
String[] names={"小红","小强","凤姐","春哥","马姐"};
System.out.println("请输入您要找的美女");
String name=input.next();
boolean flag=false;//假设找不到这个人
for(int i=0;i<names.length;i++){
if(name.equals(names[i])){
flag=true;
System.out.println("找到了,她在"+i+"号房间");
break;

}
}
if(flag==false){
System.out.println("没有这个人!");
}

}
}

/*
3、插入算法:要求有一个有序的数组,在这个有序的数组中
插入一个新的数据,要求插入后还是有序的。
示例:有一个数据int[] arr={3,8,10,15,21,33,0};现在要求
插入一个12的数据,最后要求还是有序的。
*/
import java.util.*;
public class E{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr={3,8,10,15,21,33,0};
System.out.println("请输入一个整数");
int a=input.nextInt();
arr[6]=a;

for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}else{
break;
}

}

for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}

}
}

/*
3、插入算法:要求有一个有序的数组,在这个有序的数组中
插入一个新的数据,要求插入后还是有序的。
示例:有一个数据int[] arr={3,8,10,15,21,33,0};现在要求
插入一个12的数据,最后要求还是有序的。
*/
import java.util.*;
public class E{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr={3,8,10,15,21,33,0};
System.out.println("请输入一个整数");
int a=input.nextInt();
arr[6]=a;

for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}else{
break;
}

}

for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}

}
}

/*

6、(挑战题)定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。

*/
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int sum=0;

for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
sum++;
}
}

int[] brr=new int[sum];
int k=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
brr[k]=arr[i];
k++;
}
}

for(int i=0;i<brr.length;i++){
System.out.println(brr[i]);
}

}

}

/*
4、定义一个长度为6的整型数组,初始化为{6,9,10,15,20,0};的一个有序数列,现在再输入一个整数,插入到此数组中去。
*/
import java.util.*;
public class D{
public static void main(String[] args){
int[] arr={6,9,10,15,20,0};
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();
arr[arr.length-1]=t;

for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int temp;
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}else{
break;
}
}

for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}

}

}

public class E{
public static void main(String[] args){
int[] arr={3,5,10,2,65};

int n=arr.length/2;//交换的次数

for(int i=0;i<n;i++){
//arr[0]---arr[4]交换 5-1-0
//arr[1]---arr[3]交换
int t;
t=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=t;
}

for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}

}

import java.util.*;
//冒泡排序(就是多次把较大值往后移)
public class F{
public static void main(String[] args){
int[] arr={20,3,6,48,7,100,66};
for(int i=1;i<arr.length;i++){//i控制比较的轮数
for(int j=0;j<arr.length-1;j++){//j控制每一轮比较的次数
if(arr[j]>arr[j+1]){
int t;
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}

}
}

//Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}

}

/*
11、声明一个整形的数组,循环输入5个整数,将这5个整数排序。
*/
import java.util.*;
//冒泡排序
public class A{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++){
arr[i]=input.nextInt();
}

for(int i=1;i<arr.length;i++){//i控制比较的轮数
for(int j=0;j<arr.length-i;j++){//j控制每一轮比较的次数
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}

for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}

//给一个数组做反序。
public class B{
public static void main(String[] args){
int[] arr={222,333,555,777,888};

int n=arr.length/2;
for(int i=0;i<n;i++){
//arr[0]---arr[4]
int temp;
temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}

import java.util.*;
//13、(挑战题)、求1-100以内所有的质数
public class C{
public static void main(String[] args){
for(int i=2;i<100;i++){
boolean flag=true;//假设这个数是质数
for(int j=2;j<i;j++){
if(i%j==0){
flag=false;
//System.out.println(i+"不是质数");
break;

}
}
if(flag==true){
System.out.println(i+"是质数");
}
}

}

}

/*声明一个二维数组,3行2列,循环输入6个人的成绩,并循环输出。*/
import java.util.*;
public class D{
public static void main(String[] args){
int[][] arr=new int[3][2];
Scanner input=new Scanner(System.in);
for(int i=0;i<arr.length;i++){
for(int j=0;j<2;j++){
System.out.println("请输入第"+i+"行,第"+j+"列的数");
arr[i][j]=input.nextInt();
}
}

for(int i=0;i<arr.length;i++){
for(int j=0;j<2;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}

}

/*

3、定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下:
java c# sql
第1名学生 89 79 98
第2名学生 99 80 100
第3名学生 79 99 87

*/

import java.util.*;

public class E{
public static void main(String[] args){
int[][] arr=new int[3][3];

Scanner input= new Scanner(System.in);

for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的java成绩");
arr[i][0]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的c#成绩");
arr[i][1]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的sql成绩");
arr[i][2]=input.nextInt();
}

System.out.println("\t\tjava\tc#\tsql");

for(int i=0;i<arr.length;i++){
System.out.print("第"+(i+1)+"个学生\t");
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}

/*
使用二维数组完成:要求使用循环。
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1

*/

public class F{
public static void main(String[] args){
int[][] arr=new int[5][5];
for(int i=0;i<arr.length;i++){
arr[i][0]=1;
}

for(int i=1;i<arr.length;i++){
for(int j=1;j<5;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];

}
}

for(int i=0;i<arr.length;i++){
for(int j=0;j<=i;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}

/*
给你一个整数4682,要求计算出它的千位,百位,十位,个位,并且打印出来。
千位 百位 十位 个位
4 6 8 2

*/

public class B{
public static void main(String[] args){
int t=4682;
int q=t/1000%10;
int b=t/100%10;
int s=t/10%10;
int g=t/1%10;

System.out.println("千位\t百位\t十位\t个位");
System.out.println(q+"\t"+b+"\t"+s+"\t"+g);
}

}

/*
声明两个空间a,b,a=6,b=8,要求将a与b的数据进行交换后,打印出来。
a的值是 b的值是
8 6

*/

public class I{
public static void main(String[] args){
int a=6;
int b=8;
int c;

c=a;
a=b;
b=c;

System.out.println("a的值是\tb的值是");
System.out.println(a+"\t"+b);
}

}

最大值

public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[][] arr=new int[3][4];
for(int i=0;i<arr.length;i++){
System.out.println("请输入数");
for(int j=0;j<4;j++){

arr[i][j]=input.nextInt();
}

}
int max=arr[0][0];
for(int i=0;i<arr.length;i++){

for(int j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
}

}

}
System.out.print(max);
}

public static void main(String[] args){
Scanner input=new Scanner(System.in);

int[] arr=new int[3];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}

int max=arr[0];
int min=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i];
}

}
System.out.println("最大值是"+max);
System.out.println("最小值是"+min);
}

Java基础算法的更多相关文章

  1. Java基础算法集50题

    最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些 ...

  2. java基础算法之冒泡排序

    接触冒泡算法还是大一了,学习C语言的冒泡算法.现在唯一记得就是冒泡与选择了.出来刚刚工作的时候觉的算法基本没撒用处,现在发现这些都是很好的基础.因此自己也准备重新拾起这些知识. 冒泡排序 泡排序是一种 ...

  3. java基础算法-快速排序

    玩博客园很多年,第一次写点什么,就从基础开始吧.最近去面试,发现自己算法忘光了,赶紧复习下.以下代码自带测试类,复制进eclipse中右键 run as -->java application ...

  4. java基础算法之快速排序

    快速排序(Quicksort)是对冒泡排序的一种改进.在大学学过之后现在基本忘了,最近在好多地方都看到说快速排序在面试会问到,于是自己也准备重新拾起以前忘记的东西来,慢慢的积累自己的基础知识.figh ...

  5. java基础算法题

    为了提高自己的代码能力和算法能力,我决定每天学习一道算法题,吸收前辈思想. [程序1] TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三 ...

  6. java基础算法之插入排序

    一.插入排序介绍 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通 ...

  7. java基础算法之选择排序

    选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...

  8. java基础算法(一):最大子序列和问题的多种算法思路

    问题: /** * 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和,并顺序打印子序列. * 示例: * 输入: [-2,1,-3,4,-1,2,1 ...

  9. Java基础:JVM垃圾回收算法

    众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...

随机推荐

  1. ZOJ 2601 Warehouse Keeper

    Warehouse Keeper Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on ZJU. Origin ...

  2. Redis介绍以及安装具体解释

    redis是一个key-value存储系统. 和Memcached类似.它支持存储的value类型相对很多其它,包含string(字符串).list(链表).set(集合).zset(sorted s ...

  3. UVALIVE 4287 Proving Equivalences (强连通分量+缩点)

    题意:给定一个图,问至少加入多少条边能够使这个图强连通. 思路:首先求出这个图的强连通分量.然后把每个强连通分量缩成一个点.那么这个图变成了一个DAG,求出全部点的入度和出度,由于强连通图中每个节点的 ...

  4. unix中文件I/O

    在unix中可用的文件I/O函数包含打开文件,读文件,写文件等. Unix系统中的大多数文件I/O须要用到5个函数:open,read,write,lseek,close. 这里要说明的是read,w ...

  5. hdu3468 Treasure Hunting 二分匹配

    //给一个n*m的图 //.表示空白地 //*表示有黄金 //#表示墙 //一个人须要依照A...Z..a..z的顺序以最短路径走到下一个 //每次仅仅能在他的路线上经过的地方取一块黄金 //问最多能 ...

  6. 将 Android* Bullet 物理引擎移植至英特尔&#174; 架构

    简单介绍 因为眼下的移动设备上可以使用更高的计算性能.移动游戏如今也可以提供震撼的画面和真实物理(realistic physics). 枪战游戏中的手雷爆炸效果和赛车模拟器中的汽车漂移效果等便是由物 ...

  7. hdoj 3376,2686 Matrix Again 【最小费用最大流】

    题目:hdoj 3376 Matrix Again 题意:给出一个m*n的矩阵,然后从左上角到右下角走两次,每次仅仅能向右或者向下,出了末尾点其它仅仅能走一次,不能交叉,每次走到一个格子拿走这个格子中 ...

  8. 软件project之软件设计

    英雄是随着历史的时代产生的.软工也不例外.软件project这一门学科主要是为了解决当代软件危机而诞生的, 学习软件project的视频过后,最终让我揭开了它的神奇面纱,让我对软工设计有了一个初步的认 ...

  9. HDU4825:Xor Sum 解题报告(0/1 Trie树)

    Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数. 随后 Prometheus 将向 Ze ...

  10. 5.不用拷贝的对象可以用ref

    #include <iostream> #include <string> #include <boost/bind.hpp> #include <boost ...