代码编织梦想

 

目录

BASIC-01    A+B问题

BASIC-02    序列求和 

 BASIC-03    圆的面积

 BASIC-04    Fibonacci数列

BASIC-1    闰年判断

 BASIC-2    01字串

 BASIC-3    字母图形

 BASIC-4    数列特征

 BASIC-5    查找整数

BASIC-6    杨辉三角形

 BASIC-7    特殊的数字

BASIC-8    回文数

 BASIC-9    特殊回文数

 BASIC-10    十进制转十六进制

 BASIC-11    十六进制转十进制

 BASIC-12    十六进制转八进制

 BASIC-13    数列排序

BASIC-14    VIP试题 时间转换

 BASIC-15    VIP试题 字符串对比

 BASIC-16    VIP试题 分解质因数

 BASIC-17    VIP试题 矩阵乘法

 BASIC-18    VIP试题 矩形面积交

 BASIC-19    VIP试题 完美的代价

 BASIC-20    VIP试题 数的读法

  BASIC-22    VIP试题 FJ的字符串

 BASIC-23    VIP试题 芯片测试

 BASIC-24    VIP试题 龟兔赛跑预测

 BASIC-25    VIP试题 回形取数

 BASIC-26    VIP试题 报时助手

 BASIC-28    VIP试题 Huffuman树

 BASIC-29    VIP试题 高精度加法

 BASIC-30    VIP试题 阶乘计算


OJ链接:http://lx.lanqiao.cn/problemset.page?code=BASIC-&userid=301077

       虽然大三了,对算法掌握的不是很好,这些题的我的解题思路大部分都是比较常规的解法,没有涉及到数据结构和复杂算法,希望能帮助到大家。类名以题目和题号命名,思路写在注释,AC代码依次如下。

BASIC-01    A+B问题

package 蓝桥杯系统入门训练;

import java.util.*;
public class A加B问题{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Integer a = sc.nextInt();
        Integer b = sc.nextInt();
        System.out.println(a + b);
    }
}

BASIC-02    序列求和 

package 蓝桥杯系统入门训练;

import java.util.Scanner;

public class 入门训练_序列求和 {
	 public static void main(String[] args) {
	        Scanner sc = new Scanner(System.in);
	        long n = sc.nextInt();
	        System.out.println((1+n)*n/2);//n很大时,用循环做会超时!
	 }
}

 BASIC-03    圆的面积

package 蓝桥杯系统入门训练;

import java.util.Scanner;

public class 入门训练_圆的面积 {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double r = sc.nextDouble();
        System.out.printf("%.7f",Math.PI*r*r);//3.1415926535
    }
}

 BASIC-04    Fibonacci数列

package 蓝桥杯系统入门训练;

import java.util.Scanner;

public class 入门训练_Fibonacci数列 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int size=1000000;
		int[] a = new int[size];
		a[0]=1;a[1]=1;                                       
		for(int i=2;i<n;i++){
			a[i]=a[i-1]+a[i-2];
			a[i]=a[i]%10007;
		}
		System.out.println(a[n-1]);
	}
}

BASIC-1    闰年判断

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 闰年判断01 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int y = in.nextInt();
		if ((y%4==0&&y%100!=0)||y%400==0) {
			System.out.println("yes");
		}
		else {
			System.out.println("no");
		}
	}
}

 BASIC-2    01字串

package 蓝桥杯系统基础练习;

public class 零一子串02 {
	public static void main(String[] args) {
		for (int j = 0; j < 32; j++) {
			String str = Integer.toBinaryString(j);
			System.out.printf("%05d",Integer.valueOf(str));
			System.out.println();
		}
	}
}

 BASIC-3    字母图形

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 字母图形03 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		int b=in.nextInt();
		int cnt;
		String c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		for (int i = 0; i < a; i++) {
			cnt=0;
			if(i>0)
				for(int k=i-1;k>=0;k--) {
					System.out.print(c.charAt(k+1));
					cnt++;
					if(cnt==b)break;
				}
			for (int j = i; j < b; j++) {
				System.out.print(c.charAt(j-i));
			}	
			System.out.println();
		}
	}
}

 BASIC-4    数列特征

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 数列特征04 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] a= new int[10005];
		int max=-10000,min=10000,sum=0;
		for (int i = 0; i < n; i++) {
			a[i]=in.nextInt();
			if(a[i]>max)max=a[i];
			if(a[i]<min)min=a[i];
			sum+=a[i];
		}
		System.out.print(max+"\n"+min+"\n"+sum);
	}
}

 BASIC-5    查找整数

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 查找整数05 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n= in.nextInt();
		int[] a = new int[1005];
		for (int i = 0; i < n; i++) {
			a[i]=in.nextInt();
		}
        int find=in.nextInt();
        int flag=1;
        for (int i = 0; i < n; i++) {
			if(a[i]==find) {
				System.out.println(i+1);
				flag=0;
				break;
			}
		}
        if(flag==1)System.out.println(-1);
	}
}

BASIC-6    杨辉三角形

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 杨辉三角06 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int[][] a= new int[35][35];  
		a[1][1]=1;
		System.out.println(1);
		for (int i = 2; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				a[i][j]=a[i-1][j-1]+a[i-1][j];//保存a[i][j]
				System.out.print(a[i][j]+" ");
			}
			System.out.println();
		}
	}
}

 BASIC-7    特殊的数字

package 蓝桥杯系统基础练习;

public class 特殊的数字07 {
	public static void main(String[] args) {
		int ge,shi,bai;
		for (int i = 100; i <1000; i++) {
			ge=i%10;
			shi=i/10%10;
			bai=i/100;
			if(i==Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3)) {
				System.out.println(i);
			}
		}
	}
}

BASIC-8    回文数

package 蓝桥杯系统基础练习;

public class 回文数08 {
	public static void main(String[] args) {
		int ge,shi,bai,qian;
		for(int i=1000;i<10000;i++) {
			ge=i%10;
			shi=i/10%10;
			bai=i/100%10;
			qian=i/1000;
			if(ge==qian&&shi==bai)
				System.out.println(i);
		}
	}
}

 BASIC-9    特殊回文数

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 特殊回文数09 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		for(int w1=0;w1<10;w1++) {
			for(int w2=0;w2<10;w2++) {
				for(int w3=0;w3<10;w3++) {
					for(int w4=0;w4<10;w4++) {
						for(int w5=1;w5<10;w5++) {
							if(w1+w2+w3+w4+w5==n&&w1==w5&&w2==w4)
								System.out.println(10000*w5+1000*w4+100*w3+10*w2+w1);
						}
					}
				}
			}
		}
		for(int w1=0;w1<10;w1++) {
			for(int w2=0;w2<10;w2++) {
				for(int w3=0;w3<10;w3++) {
					for(int w4=0;w4<10;w4++) {
						for(int w5=0;w5<10;w5++) {
							for(int w6=1;w6<10;w6++) {
								if(w1+w2+w3+w4+w5+w6==n&&w1==w6&&w2==w5&&w3==w4)
									System.out.println(100000*w6+10000*w5+1000*w4+100*w3+10*w2+w1);
							}
						}
					}
				}
			}
		}
	}
}

 BASIC-10    十进制转十六进制

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 十进制转十六进制10 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num =in.nextInt();
		String str = Integer.toHexString(num);//将数字转换成十六进制
		System.out.println(str.toUpperCase());//小写转为大写字母,数字不变
	}
}

 BASIC-11    十六进制转十进制

package 蓝桥杯系统基础练习;

import java.util.Scanner;

public class 十六进制转十进制11 {
	public static int toTenbit(char c) {
		switch(c) {
			case 'A':return 10;
			case 'B':return 11;
			case 'C':return 12;
			case 'D':return 13;
			case 'E':return 14;
			case 'F':return 15;	
			default:return c-48;
		}
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String str=in.next();
		long sum=0;
		char[] c=str.toCharArray();//将字符串对象的字符转化为字符数组
		for (int i = c.length-1; i >=0; i--) {
			sum+=toTenbit(c[i])*Math.pow(16, c.length-i-1);
		}
		System.out.println(sum);
	}
}

 BASIC-12    十六进制转八进制

package 蓝桥杯系统基础练习;
/* 思路:
 * 将十六进制转成二进制,再将二进制转成八进制。
 * 过程中16-2的转换是四位一组,2-8的是三位一组,中间要补上位数不足的零。
 * 在将十六进制转换为二进制完成后,记得算一下长度是不是3的倍数,
 * 如果不是记得补齐,不然三位一个转八进制时就会因为位数不足出错。
 * 最后输出的时候,用正则表达式将八进制前面的0去掉.
 */
import java.util.Scanner;

public class 十六进制转八进制12 {
	public static void main(String args[]) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		String arr[] = new String[n];
		for(int i = 0;i < n;i++) {
			arr[i] = in.next();
		}
		for(int i = 0;i < arr.length;i++) {
			String s = HextoOct(arr[i]);
			System.out.println(s.replaceFirst("^0", ""));//使用给定的参数""替换字符串第一个匹配给定的正则表达式(一或多个零)的字符串。去开头多余的零。
		}
	}
	private static String HextoOct(String s) {
		StringBuffer s1=new StringBuffer("");
		//十六进制转二进制
		for(int i=0;i<s.length();i++) {
			switch(s.charAt(i)) {//charAt(int index)用来检索特定索引下的字符的String实例.
			case '0':s1.append("0000");break;
			case '1':s1.append("0001");break;
			case '2':s1.append("0010");break;
			case '3':s1.append("0011");break;
			case '4':s1.append("0100");break;
			case '5':s1.append("0101");break;
			case '6':s1.append("0110");break;
			case '7':s1.append("0111");break;
			case '8':s1.append("1000");break;
			case '9':s1.append("1001");break;
			case 'A':s1.append("1010");break;
			case 'B':s1.append("1011");break;
			case 'C':s1.append("1100");break;
			case 'D':s1.append("1101");break;
			case 'E':s1.append("1110");break;
			case 'F':s1.append("1111");break;
			}
			
		}
		s = s1.toString();//s1转换为字符串
		//字符的长度如果不能整除3,则需要在转换的结果前补0;
		if (s.length()%3 == 1)
			s = "00"+s;
		else if(s.length()%3 == 2)
			s = "0"+s;
		StringBuffer s2 =new StringBuffer("");
		//二进制转八进制
		for(int i = 0;i < s1.length();i+=3) {
			String str = s.substring(i, i+3);//substring(x,y)是从x到y前的位置停止
			switch(str) {
			case "000":s2.append('0');break;
			case "001":s2.append('1');break;
			case "010":s2.append('2');break;
			case "011":s2.append('3');break;
			case "100":s2.append('4');break;
			case "101":s2.append('5');break;
			case "110":s2.append('6');break;
			case "111":s2.append('7');break;
			}
		}
		return s2.toString();
	}
}


 BASIC-13    数列排序

package 蓝桥杯系统基础练习;

import java.util.Arrays;
import java.util.Scanner;

public class 数列排序13 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int []a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i]=in.nextInt();
		}
		Arrays.sort(a);
		for (int i = 0; i < n; i++) {
			System.out.print(a[i]+" ");
		}
	}
}

BASIC-14    VIP试题 时间转换

package 基础练习VIP;

import java.util.Scanner;

public class 时间转换14 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num=in.nextInt();
		int shi,feng,miao;
		shi=num/3600;
		feng=(num-shi*3600)/60;
		miao=num%60;
		System.out.println(shi+":"+feng+":"+miao);
	}
}

 BASIC-15    VIP试题 字符串对比

package 基础练习VIP;

import java.util.Scanner;

public class 字符串对比15 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s1=in.next();
		String s2=in.next();
		if(s1.length()!=s2.length())System.out.println(1);
		else if (s1.equals(s2))System.out.println(2);
		else if (s1.toLowerCase().equals(s2.toLowerCase()))System.out.println(3);
		else System.out.println(4);
	}
}

 BASIC-16    VIP试题 分解质因数

package 基础练习VIP;

import java.util.Scanner;

public class 分解质因数16 {
	public static boolean isPrime(int n) {
		for(int i=2;i*i<=n;i++) {
			if(n%i==0)return false;
		}
		return true;
	}
	public static String resolve(int n) {		
		String str="";
		int i=2;
		while (n!=1) {
			if(isPrime(i)&&n%i==0) {//如果i是质数且能被n整除
				str=str+"*"+i;
				n=n/i;
			}
			else i++;//质因数从小到大排序
		}
		return str.substring(1);//去掉首字符*:截取索引从一开始的字符串
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		int b=in.nextInt();		
		for(int i=a;i<=b;i++)
			if(isPrime(i)==true)System.out.println(i+"="+i);
			else System.out.println(i+"="+resolve(i));
	}
}

 BASIC-17    VIP试题 矩阵乘法

package 基础练习VIP;

import java.util.Scanner;

public class 矩阵乘法17 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a[][]=new int[35][35];
		int r[][]=new int[35][35]; //结果
		int N=in.nextInt();
		int M=in.nextInt();
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				a[i][j]=in.nextInt();
			}
		}
		for (int i = 0; i < N; i++) {
			r[i][i]=1;//单位矩阵,如同数的乘法中的1
		}
		for (int m = 0; m < M; m++) {            //M次幂
			int t[][]=new int[35][35];			 //引入临时变量
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					for (int k = 0; k < N; k++) {//每个元素对应相乘再相加
						t[i][j]+=r[k][j]*a[i][k]; 
					}
				}
			}
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					r[i][j]=t[i][j];			//更新a数组的值
				}
			}
			t=null;								//t清零再次做乘法运算
		}
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				System.out.print(r[i][j]+" ");
			}	
			System.out.println();
		}
	}
}

 BASIC-18    VIP试题 矩形面积交

package 基础练习VIP;

import java.util.Scanner;

public class 矩形面积交18 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		double x[]=new double[5];
		double y[]=new double[5];
		double x1,y1,x2,y2;	//交集矩形的左下和右上坐标
		for (int i = 1; i < 5; i++) {
			x[i]=in.nextDouble();
			y[i]=in.nextDouble();
		}
		//例如:首先交集矩形的左下横坐标:肯定是每个矩形的横坐标较小的一个,
		//之后交集矩形的左下横坐标肯定是在中间,所以x1再取最大值
		x1=Math.max(Math.min(x[1],x[2]),Math.min(x[3],x[4]));//左下横坐标
		y1=Math.max(Math.min(y[1],y[2]),Math.min(y[3],y[4]));//y坐标同理
		x2=Math.min(Math.max(x[1],x[2]),Math.max(x[3],x[4]));//右上横坐标
		y2=Math.min(Math.max(y[1],y[2]),Math.max(y[3],y[4]));
//		System.out.println(x1);
//		System.out.println(y1);
//		System.out.println(x2);
//		System.out.println(y2);
		if(y2>y1&&x2>x1)System.out.printf("%.2f",(y2-y1)*(x2-x1));
		else System.out.println("0.00");
	}
}

 BASIC-19    VIP试题 完美的代价

package 基础练习VIP;
/*思路
先说不可能的情况:①字符串长度是偶数,字符串中出现了某个出现次数为奇数的字符
②字符串长度是奇数,字符串中出现了一个以上出现次数为奇数的字符
解题思路为:
①设置边界front,end。
②从后往前寻找与front处相同的字符。
③若找到,则把这个字符移动到end处(因为题目规定只能相邻的两个字符移动,所以此处是指一个一个的移动,
直到把目标字符移动到end处),并计算移动的次数,然后缩小边界:front++;end–;
若没有找到,则判断是否为“Impossible”情况,若是则输出“Impossible”并结束程序;
若不是则计算将此字符移动到中间位置所需次数(只是计算次数,并不需要真正的移动),然后缩小边界:front++;
④重复①~③步骤,直到front >= end
⑤输出结果
ps.若是提前将出现次数为奇数的字符移动到中间位置,那么接下来的每一次交换次数都会+1,
所以这个字符要在最后一步才把它移动到中间位置。
 */
import java.util.Scanner;

public class 完美的代价19 {
	static char[] swap(char[] c,int before,int obj) {//交换c[before]到位置c[obj]
		char tem=c[before]; //先保存c[before]的字符,因为之后会往前推
		for (int i = before; i < obj; i++) {
			c[i]=c[i+1];	//把目标索引之前的字符往前推一
		}
		c[obj]=tem;	//目标位置替换为之前的字符
		return c;
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		String s=in.next();
		//char[] c=s.toCharArray();//将字符串对象的字符转化为字符数组
		char[] c=new char[n];
		for(int i=0;i<n;i++){
            c[i] = s.charAt(i);
        }
		int front=0,end=n-1,times=0;
		boolean flag=false;
		while (front<end) {
			for (int i = end; i >= front; i--) {
				if (i==front) {//如果没找到和front处相同的字符,即front处是一个出现次数为奇数的字符
					if(n%2==0||flag) {
						System.out.println("Impossible");
						System.exit(0);
					}
					else {
						times +=n/2-front;
						flag=true;//出现次数为奇数的字符找到了一次,若再出现一次则Impossible
						front++;
						break;
					}
				}
				if(c[i]==c[front]) {
					c=swap(c,i,end);
					times+=end-i;
					front++;end--;
					break;
				}
			}
		}
		System.out.println(times);
	}
}

 BASIC-20    VIP试题 数的读法

package 基础练习VIP;

import java.util.Scanner;

public class 数的读法20 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s=in.next();
		int len=s.length();
		char[] str=s.toCharArray();
		String[] num= {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//0-9
		//11位读数:因为数值大小不超过2,000,000,000
		//					 20,0000,0000  
		//                   bit位数倒序
		String[] bit= {"","","shi","bai","qian","wan","shi","bai","qian","yi","shi"};
		int j;
		for (int i = 0; i < len; i++) {
			j=str[i]-48;	//将各位上的数由字符型转换为int型
			//System.out.println(j);
			if(j==0) {//当前的数是0
				if(i<len-1) {//当下字符不是末字符
					if(str[i+1]!=48)//下一个字符不是0
						System.out.print(num[j]+" ");//读零
				}
			}
			else if((len-i==2||len-i==6||len-i==10)&&j==1) {
				System.out.print(bit[len-i]+" ");//当前的数是1且位数读十
			}
			else if(i>=1&&str[i-1]==48&&j==1) {//当前的数是1且上一个数是零,且位数不读十
				System.out.print(bit[len-i]+" ");
			}
			else //当前的数非0非1;当前的数是1且上一个数非零:直接读数
				System.out.print(num[j]+" "+bit[len-i]+" ");
		}
	}
}

  BASIC-22    VIP试题 FJ的字符串

package 基础练习VIP;

import java.util.Scanner;

public class FJ的字符串22 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		System.out.println(AN(n));
	}
	static String AN(int n) {
		if (n==1) {
			return "A";
		}
		else {
			char c=(char) ('A'+n-1);
			return AN(n-1)+String.valueOf(c)+AN(n-1);
		}
	}
}

 BASIC-23    VIP试题 芯片测试

package 基础练习VIP;

import java.util.Scanner;

/*这个題其实关键的解题就一个,
 *只要其他的芯片对一个芯片的判断结果是1的个数大于0的个数,就可以判断这个是一个好芯片。为什么呢?
 *因为题目中说了,其中坏的芯片的判断是随即的要不是1要不是0,
 *所以对一个好的芯片(被检测)的判断而言,用坏的去判断(检测方)这个好的,显示1和显示0的概率都是50%,
 *而如果还有一个好的芯片(检测方)也去判断这个好的芯片(被检测),这个结果一定是1,
 *所以这个显示1的总数一定会大于显示0的个数,即显示1的总数大于总数的一半。*/
public class 芯片测试23 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int a[][]=new int[21][21];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				a[i][j]=in.nextInt();
			}
		}
		int sum;//用第i块芯片测试第j块芯片时得到的测试结果为好的个数
		for (int j = 0; j < n; j++) {//其他的芯片对第j块芯片的判断
			sum=0;
			for (int i = 0; i <n; i++) {
				sum+=a[i][j];
			}
			if (sum>n/2) {
				System.out.print(j+1+" ");
			}
		}
	}
}

 BASIC-24    VIP试题 龟兔赛跑预测

package 基础练习VIP;

import java.util.Scanner;

public class 龟兔赛跑预测24 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int v1=in.nextInt();
		int v2=in.nextInt();
		int t=in.nextInt();
		int s=in.nextInt();
		int l=in.nextInt();
		int s1=0,s2=0,cnt=0;
		for (int i = 1;s1<l&&s2<l; i++) {
			s1+=v1;
			s2+=v2;
			if(s1>=l)continue;//易错点:若兔子已到达终点,不执行后面的代码(乌龟的路程不能再变化)
			if (s1-s2>=t) {
				s2+=v2*s;  
				cnt++;
			}	
		} 
		if(s1==s2){	//两者同时到达终点
			System.out.println("D"+"\n"+l/v2);  
		}
		else if(s1>s2) {	//兔子获胜
			System.out.println("R "+"\n"+(l/v1+cnt*s));
		}
		else if (s1<s2) {	//乌龟获胜
			System.out.println("T"+"\n"+l/v2);
		}
	}
}

 BASIC-25    VIP试题 回形取数

package 基础练习VIP;

import java.util.Scanner;

public class 回形取数25 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int m=in.nextInt();
		int n=in.nextInt();
		int a[][]=new int[205][205];
		for (int i = 0; i < m; i++) {
			for (int j = 0; j < n; j++) {
				a[i][j]=in.nextInt();
			}
		}
		int i=-1,j=0,sum=0;
		//只需首次判断是否到边界,之后判断是否直走下去的数已输出过
		while (sum<m*n) {
			while(i<m-1&&a[i+1][j]!=-1) {//纵坐标不变,横坐标++,左侧
				System.out.print(a[++i][j]+" ");
				a[i][j]=-1;//标记已输出过
				sum++;
			}
			while(j<n-1&&a[i][j+1]!=-1) {//横坐标不变,纵坐标++
				System.out.print(a[i][++j]+" ");
				a[i][j]=-1;
				sum++;
			}
			while(i>0&&a[i-1][j]!=-1) {//纵坐标不变,横坐标--
				System.out.print(a[--i][j]+" ");
				a[i][j]=-1;
				sum++;
			} 
			while(j>0&&a[i][j-1]!=-1) {//横坐标不变,纵坐标--  
				System.out.print(a[i][--j]+" ");
				a[i][j]=-1;
				sum++;
			}		
		}
	}
}

 BASIC-26    VIP试题 报时助手

package 基础练习VIP;

import java.util.Scanner;

public class 报时助手26 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int h=in.nextInt();
		int m=in.nextInt();
		String num[]={"zero","one","two","three","four","five","six","seven","eight","nine",
				"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
				"eighteen","nineteen","twenty"};
		if(m==0) {
			if(h<=20)System.out.println(num[h]+" o'clock");
			else {
				System.out.println("twenty "+num[h%20]+" o'clock");
			}
		}
		else {
			if(h<=20)System.out.print(num[h]+" ");
			else {
				System.out.print("twenty "+num[h%20]+" ");
			}
			if(m<=20)System.out.println(num[m]);
			else if(m<30)System.out.println("twenty "+num[m%20]);
			else if(m==30)System.out.println("thirty ");
			else if(m<40)System.out.println("thirty "+num[m%30]);
			else if(m==40)System.out.println("forty ");
			else if(m<50)System.out.println("forty "+num[m%40]);
			else if(m==50)System.out.println("fifty");
			else if(m<60)System.out.println("fifty "+num[m%50]);
		}
	}
}

 BASIC-28    VIP试题 Huffuman树

package 基础练习VIP;

import java.util.Arrays;
import java.util.Scanner;

public class Huffuman树28 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int a[]=new int[n];
		int sum=0;
		for (int i = 0; i < n; i++) {
			a[i]=in.nextInt();
		}
		for (int i = 0; i < n-1; i++) {
			Arrays.sort(a);
			sum+=a[0]+a[1];	
			//从数组中删除最小的两个数:
			a[0]=a[0]+a[1];	//令第一个元素为新数加入
			a[1]=100001;	//令第二个元素为一个大于之后的新数(由题:这里取100*1000+1),避免计入。相当于删去啦。
		}
		System.out.println(sum);
	}
}

 BASIC-29    VIP试题 高精度加法

package 基础练习VIP;

import java.util.Scanner;

public class 高精度加法29 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s1,s2;
		StringBuffer c =new StringBuffer();
		s1=in.next();
		s2=in.next();
		char a[]=s1.toCharArray();
		char b[]=s2.toCharArray();
		int t,x,y;
		for (int i=a.length-1,j=b.length-1,r=0;i>=0||j>=0||r>0;i--,j--){
			x=i>=0?a[i]-'0':0;//防止a,b长度不同的情况,其中一个数已经取完了。
			y=j>=0?b[j]-'0':0;
			t=x+y+r;
			r=t/10;
			c=c.append(t%10);
		}
		System.out.println(c.reverse());//字符串颠倒
	}
}

 BASIC-30    VIP试题 阶乘计算

package 基础练习VIP;

import java.util.Scanner;

public class 阶乘计算30 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n=in.nextInt();
		int a[]=new int[3000];
		a[0]=1;
		int s=0,m;
		for (int i = 2; i <= n; i++) {
			for (int j = 0; j < 3000; j++) {//题目提示:a乘以一个整数i变为将数组A的每一个元素都乘以i
				m=a[j]*i+s;//每一位的计算
				a[j]=m%10; //当前的位的数
				s=m/10;	   //求需要进位的数 		
			}			
		}
		int i=2999;
		while(a[i]==0){i--;};//寻找第一个不为零的项,因为后面的项都是零,数的最高位不是零,倒序寻找。
		for (int j = i; j >=0; j--) {//逆向输出 
			System.out.print(a[j]);
		}
	}
}

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44491991/article/details/113794279

蓝桥杯——数列特征,字母图形 , 01字串 ,闰年判断-爱代码爱编程

基础练习 数列特征   问题描述 给出n个数,找出这n个数的最大值,最小值,和。 输入格式 第一行为整数n,表示数的个数。 第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。 输出格式 输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。 样例输入 5 1 3 -2 4 5 样例输出 5 -2

蓝桥杯vip习题及答案基础练习(c语言)_我是dj—程序员的博客-爱代码爱编程

版权声明:如果对大家有帮助,大家可以自行转载的。蓝桥杯VIP习题及答案(C语言) 因为报名了蓝桥杯省赛,所以写下这个博客来记录学习 一、基础训练 阶乘计算 问题描述 输入一个正整数n,输出n!的值。   其中n!=123

“蓝桥杯”练习系统试题集,题解答案(c/c++)_我的程序跑快快的博客-爱代码爱编程_蓝桥杯练习系统答案

文章目录 二、基础练习BASIC-1 闰年判断BASIC-2 01字串BASIC-3 字母图形BASIC-4 数列特征BASIC-5 查找整数BASIC-6 杨辉三角形BASIC-7 特殊的数字BASIC-8 回文数

“蓝桥杯”练习系统练习题答案(自己做的)-爱代码爱编程

题目来源: 蓝桥杯练习系统(写博客日期为2019.3.23,所以可能读者看到的时候,更新了新的题) 这里只提供每道题的我的解题代码,仅供参考。这里不会写解题思路和详解,如果有需要的话,请留言给我,我会在留言区回复。vip题目来源dotcpp(顺序跟练习系统一样,只不过我没有vip,所以在dotcpp网站中看题并解题)。 试题集截图: 

蓝桥杯基础练习的题目和答案-爱代码爱编程

蓝桥杯题目 可能不是最佳算法,不过也是能计算出来的,如果不会,算能提供一种思维。 闰年判断01子串字母图形数列特征查找整数杨辉三角形特殊的数字回文数特殊回文数十进制转十六进制十六进制转十进制十六进制转八进制数列排序阶乘计算高精度加法1、闰年判断 import java.util.Scanner; public class Main { pu

蓝桥杯之全部基础练习答案及思路(java)-爱代码爱编程

基础练习 第一题 数列排序 资源限制 时间限制:1.0s 内存限制:512.0MB问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入 5 8

蓝桥杯习题答案汇总-爱代码爱编程

这篇文章是为了方便查看写过的蓝桥杯题目(python),整理如下:最后更新于2020.07.30 入门训练 试题 入门训练 A+B问题试题 入门训练 序列求和试题 入门训练 圆的面积试题 入门训练 Fibonacci数列 基础练习 试题 基础练习 时间转换试题 基础练习 十六进制转八进制试题 基础练习 杨辉三角形试题 基础练习 十六进制转十进制

蓝桥杯历年真题及详细解答-爱代码爱编程

这里是蓝桥杯历年的题目汇总,后面将会陆续更新将往年真题以及解答发布出来,欢迎各位小伙伴关注我吖,你们的关注就是给我最好的动力!!! 关注公众号:元气算法 获取博主网上收集的蓝桥资料 新开专栏:元气蓝桥-我要上魔都 链接:我要上魔都. 本专栏主要总结归纳了一些蓝桥杯相关算法的套路以及模板,帮助同学快速答题。 蓝桥杯历年省赛

蓝桥杯c语言基础试题答案,2014年蓝桥杯c语言试题及答案-爱代码爱编程

2014年蓝桥杯c语言试题及答案 类似这样的带分数,100 有 11 种表示法。 题目要求: 从标准输入读入一个正整数N (N<1000*1000) 程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入: 100 程序输出: 11 再例如: 用

蓝桥杯c语言基础试题答案,试题 基础练习 Huffuman树 蓝桥杯 C语言-爱代码爱编程

资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们

蓝桥杯c语言基础试题答案,蓝桥杯试题C语言答案.doc-爱代码爱编程

. Word 文档 1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些 人参加了竞赛: (1)A参加时,B也参加; (2)B和C只有一个人参加; (3)C和D或者都参加,或者都不参加; (4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。 00110 c、d #include int ma