几个简单小算法面试题

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

算法一

/**
	 *给定一个数6,按如下输出
	 *  6	1	2	3	4	5
	 *  5	6	1	2	3	4
	 *  4	5	6	1	2	3
	 *  3	4	5	6	1	2
	 *  2	3	4	5	6	1
	 *  1	2	3	4	5	6
	 *  思路
	 * 1、定义一个一维数组保存1-n
	 * 2、定义一个索引指针指向数组最大下标n-1
	 * 3、
	 */
	public void demo1(int n) {
		int[] a = new int[n];
		// 指定数据初始化数组
		for (int i = 0; i < a.length; i++) {
			a[i] = i + 1;
		}
		// System.out.println(Arrays.toString(a));
		// 控制索引变量
		int index = n - 1;

		// 输出
		for (int j = 0; j < a.length; j++) {
			for (int i = 0; i < a.length; i++) {
				System.out.print(a[index] + "  ");
				index++;// 移动索引
				if (index == n) {
					index = 0;
				}
			}
			System.out.println();//每行输出换行
			index--;
		}	
	}

算法二,三元一次方程求解问题

/**
	 * 100元  买 100鸡
公鸡 5元 一只
母鸡 3元 一只
小鸡 1元 三只
计算 公鸡 母鸡 小鸡数量
	 */
	public void demo2() {
		for (int i = 0; i < 100 / 5; i++) {//i 公鸡数量
			for (int j = 0; j < 100 / 3; j++) {//j 母鸡数量
				int k = 100 - i - j;//保证数量 100
				if(k % 3 == 0 && i * 5 + j * 3 + k / 3 == 100) {
					System.out.println("公鸡:" + i + ", 母鸡: " + j + ", 小鸡: " + k);
				}
				
			}
			
		}
	}

算法三,猴子分桃问题,求最少桃数

/**
	 * 有5个猴子 摘n个桃
   		第一个 5份  多一个 扔了  拿走自己一份 ,
   		第二个剩下 5份  多一个 扔了  拿走自己一份 ,
   		。。
   		第五只 分完,
    
   n 至少是多少
	 * 
	 */
	public void demo3() {
		int end = 4;// n5
		int i = 0;
		for (int j = 4; i != 5; j += 4) {
			end = j;// 1020
			//必须保证内层循环执行5次
			for (i = 0; i < 5; i++) {
				// 剩下的桃数量 是4整倍数
				if (end % 4 != 0)
					break;
				// 上次分完剩下的桃子数量
				end = end / 4 * 5 + 1;
				System.out.println("end = " + end);

			}
			System.out.println("===============");
		}
		
		System.out.println("最初的桃子数量=    " + end);

	}

算法四,二维数组的环形赋值

/**
 * 	输入一个数要求如下输出4
 * 1	2	3	4
 * 12	13	14	5
 * 11	16	15	6
 * 10	9	8	7
 * 
 * 1	2	3
 * 8	9	4
 * 7	6	5
 */
	public static void show(int n) {
		int[][] arr = new int[n][n];
			int i=0;
			int j=0;
			int k=0;
			int index=1;
			//外层循环
			for(k=0;k<(n+1)/2;k++) {
				//向左
				for(i=k,j=k;j<arr[i].length-k;j++) {
					arr[i][j]=index++;
				}
				//System.out.println("i="+i+"j="+j);
					//向下
				for(j=j-1,i=i+1;i<arr.length-k;i++) {
					arr[i][j]=index++;
				}
//				//System.out.println("i="+i+"j="+j);
//					//向右
				for(j=j-1,i=i-1;j>=k;j--) {
					arr[i][j]=index++;
				}
//				//System.out.println("i="+i+"j="+j);
//					//向上
				for(i=i-1,j=j+1;i>k;i--) {
					arr[i][j]=index++;
				}
				//System.out.println("i="+i+"j="+j);
				
			}
			//打印输出
			for(i=0;i<arr.length;i++) {
				for(j=0;j<arr.length;j++) {
					System.out.printf("%4d",arr[i][j]);
				}
				System.out.println();
			}
	}

猜你喜欢

转载自blog.csdn.net/weixin_42568742/article/details/102580138