prepare

1,全排列

public class 全排列 {

	static int count=0;
	public static void main(String[] args) {

		int a[]= {1,2,3,5,5};
		f(a,0);
		System.out.println(count);
	}

	private static void f(int[] a, int k) {
		if(k==a.length)
		{
			count++;
			for(int i=0;i<a.length;i++)
			{
				System.out.print(a[i]);
			}
			System.out.println();
		}
		for(int i=k;i<a.length;i++)
		{
			{int temp=a[k];a[k]=a[i];a[i]=temp;}
			f(a,k+1);
			{int temp=a[k];a[k]=a[i];a[i]=temp;}
		}
	}
}

2,排序 

import java.util.Arrays;
public class 排序 {
	public static void main(String[] args) {
		
		int a[]= {2,4,7,9,5,8,3,1,33};  
		int n=a.length;
		Arrays.sort(a);    //sort排序
		for(int i=0;i<n;i++)
		{
			System.out.print(a[i]+" ");
		}
		System.out.println();
		
		bubble(a,n);      //冒泡排序
		for(int i=0;i<n;i++)
		{
			System.out.print(a[i]+" ");
		}
	}

	private static void bubble(int[] a, int n) {		
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<i;j++)
			{
				if(a[j]>a[j+1])
				{
					int temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}	
	}
}

运行结果:

3,数组排序,去重   (2018第8题日志统计------排序,2017第7题日期问题-------排序,去重)

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class 大题3_日志统计1 {
	public static class act{ //创建类
		int first;
		int second;
	}
	public static class cmp implements Comparator<act>{ //自定义比较类
		public int compare(act o1,act o2)
		{
			if(o1.first==o2.first)
			{
				return o1.second-o2.second; //second从小到大
			}
			return o1.first-o2.first;//first从小到大
		}
	}
	
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
	
		act a[]=new act[n];
		for(int i=0;i<n;i++)
		{
			a[i]=new act();
			a[i].first=sc.nextInt(); 
			a[i].second=sc.nextInt();
		}
		Arrays.sort(a,new cmp());    //升序
		
		for(int i=0;i<n;i++)
		{
			System.out.println(a[i].first+" "+a[i].second);
		}
	}
}

运行结果:

import java.util.HashSet;
public class 去重 { 
	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("aaa");
		set.add("aaa");
		set.add("aaa");
		for(String ss:set)
		{
			System.out.println(ss);
		}
	}
}

https://blog.csdn.net/zhenghao6099/article/details/72801876  HashSet如果去掉重复的值,要重写hashcode和equals方法。

import java.util.HashSet;
public class 去重 {
	public static class date{
		int y;  //年
		int m;  //月
		int d;  //日
		public date(int i, int j, int k) {
			this.y=i;
			this.m=j;
			this.d=k;
		}
		public String toString()
		{
			return String.format("%d-%02d-%02d",y,m,d);
		}
		public int hashCode()    //hashCode  注意C为大写!!!!字母拼错就会结果错误
		{
			return y+m+d;
		}
		public boolean equals(Object obj)
		{
			if(!(obj instanceof date))
			{
				return false;
			}
			date date1=(date)obj;
			return this.y==date1.y && this.m==date1.m && this.d==date1.d;
		}
		
	}
	static HashSet<date> set=new HashSet<date>();
	public static void main(String[] args) {
		
		date d1=new date(2011,01,01);
		date d2=new date(2011,01,01);
		date d3=new date(2011,01,01);
		set.add(d1);
		set.add(d2);
		set.add(d3);
		for(date ss:set)
		{
			System.out.println(ss.toString());
		}
	}
}

运行结果:

 

4,是否互质  (最大公约数  2017包子计数) (最小公倍数=a*b/最大公约数) 

见2017包子计数

5,动态规划:背包问题,完全背包问题(2017包子计数)

背包问题见动态规划01背包问题,完全背包问题见2017包子计数

6,递归

斐波那契Fibonacci数列

7,暴力破解   (2016年第6届第7题牌型种数--------for循环暴力)

牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。

public class 填空7_牌型种数 {
	//3598180
	//共是记号为A,2,3,4,5,6,7,8,9,10,J,Q,k的十三个元素,每个元素的情况可能是0,1,2,3,4。这十三个元素的和为13即可。

	public static void main(String[] args) {
		
		int a[]=new int[13];
		int count=0;
		for(a[0]=0;a[0]<=4;a[0]++)
		{
			for(a[1]=0;a[1]<=4;a[1]++)
				for(a[2]=0;a[2]<=4;a[2]++)
					for(a[3]=0;a[3]<=4;a[3]++)
						for(a[4]=0;a[4]<=4;a[4]++)
							for(a[5]=0;a[5]<=4;a[5]++)
								for(a[6]=0;a[6]<=4;a[6]++)
									for(a[7]=0;a[7]<=4;a[7]++)
										for(a[8]=0;a[8]<=4;a[8]++)
											for(a[9]=0;a[9]<=4;a[9]++)
												for(a[10]=0;a[10]<=4;a[10]++)
													for(a[11]=0;a[11]<=4;a[11]++)
														for(a[12]=0;a[12]<=4;a[12]++)
														{
															if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10]+a[11]+a[12]==13)
																count++;
														}
		}
		System.out.println(count);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39450145

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值