模拟暴力贪心分治 从入门到入坑 完整版

模拟思想:

在很难用递推,递归,枚举,回溯等算法时,可采用模拟策略。

技巧:

1,理解题意
2,组织逻辑
3,写函数,不要复制粘贴
4,步步验证,做一步运行一次!

大整数相加

字符串,存进数组。

import java.math.BigInteger;

//2021年3月20日上午1:59:29
//writer:apple
public class moni {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String a="1233231231245234525235235234";
		String b="1234335655674856745967984759374";
		int len=Math.max(a.length(), b.length());
		int aa[]=new int[len];
		int bb[]=new int[len];
		int lenb=len;
		for(int i=b.length()-1;i>=0;i--)
		{
			bb[--lenb]=b.charAt(i)-'0';
		}
		int lena=len;
		for(int i=a.length()-1;i>=0;i--)
		{
			aa[--lena]=a.charAt(i)-'0';
		}
		int ans[]=new int[len];
		int t=0;
		for(int i=len-1;i>=0;i--)
		{
			ans[i]=(aa[i]+bb[i]+t)%10;
			t=(aa[i]+bb[i]+t)/10;
		}
		if(t==0)
		{
			for(int i:ans)
			{
				System.out.print(i);
			}
		}
		else {
			System.out.print(t);
			for(int i:ans)
			System.out.print(i);
		}
	}
}

暴力策略

离线算法:
对于t次询问,每次询问之间独立,可以用空间换时间的算法。

public class baoli {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int t=scanner.nextInt();
		int modd=(int) (1e9+7);
		int a[]=new int[100005];
		int ans[]=new int[1000000005];
		for(int i=1;i<=t;i++)
		{
			int n=scanner.nextInt();
			a[i]=n;
		}
		int tmp=1;
		for(int i=1;i<=100000000;i++)			
		{
			tmp=tmp*i;
			ans[i]=ans[i-1]+tmp;
		}		
		for(int i=1;i<=t;i++)
		{
			System.out.println(ans[a[i]]);
		}
	}
}

贪心策略

一般用于求解最优问题。
不一定正确。
局部最优解为全局最优解时,贪心一定正确

分治策略

分而治之
较大规模问题分解成几个较小规模问题。
分治算法:快速排序 快速幂 二分查找
二分:
找到大于k的第一个数字。

		int a[]= {0,2,3,4,5,6,7,3,2,3,5};
		int key=3;
		Arrays.sort(a);
		int l=0;int r=a.length-1;
		while(l<r)
		{
			int mid=(l+r)/2;
			if(a[mid]>key)
			{
				r=mid-1;
			}
			else {
				l=mid+1;
			}
		}
		for(int i:a)
		System.out.print(i+" ");
		System.out.println(l);//下标为l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值