版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
算法一
/**
*给定一个数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();
}
}