第一个:
设计一个三角螺旋输出如下:
12 93 10 84 5 6 7 第二个:
当N=4时能输出以下数字, 其中N为通用的,当N=任何一个数时都能输出以下规律的图形。
1 2 3 4
11 9 10 5
15 12 8 6
16 14 13 7第二个 是蛇形三角+螺旋三角拼接成的矩形,11-12-13 这条斜线是蛇形 1-9-8-7是螺旋。不知道如何写啊 各位 给出详细代码和注释啊。
设计一个三角螺旋输出如下:
12 93 10 84 5 6 7 第二个:
当N=4时能输出以下数字, 其中N为通用的,当N=任何一个数时都能输出以下规律的图形。
1 2 3 4
11 9 10 5
15 12 8 6
16 14 13 7第二个 是蛇形三角+螺旋三角拼接成的矩形,11-12-13 这条斜线是蛇形 1-9-8-7是螺旋。不知道如何写啊 各位 给出详细代码和注释啊。
解决方案 »
- iis建设中
- sql语句执行的疑惑
- 请问如何捕获CTRl+enter事件?
- 请问Maxtocode 3.21在同时装有2.0和3.5运行环境的系统上加密一个.NET 的EXE,运行就报错?为何?
- 遍历hashtable时如何修改value值??
- combobox显示不重复的数据
- 运行时错误 (在本机上调试是好的,但是到了其它的电脑上调试的时候怎么会出现这样的问题呢?)
- Web service接口函数如何保证互斥调用??
- 求助:关于web上的DATAGRID的更新问题
- 大家来看一看,componentone,实在是太爽了
- 关于 XmlSerializer 序列化的一个难题 很急
- 关于WPF的简单问题
2 9
3 10 8
4 5 6 7
输入为5,则输出:1
2 12
3 13 11
4 14 15 10
5 6 7 8 9
代码如下,大致思想就是设一个方向变量,-1为向下,0为向右,1为向左上,然后控制二维数组下标为数组赋值,最后打印。修改print()方法的传入参数即可。
view plaincopy to clipboardprint?public class Sort {
public static void main(String[] args){
print(5);
}
static void print(int n){
int l = n;
int sum = 0;
for(int i=1; i<=n; i++){
sum += i;
}
int a[][] = new int[n][n];
int s = 1;
int i = 0, j = 0;
int d = -1;
for(int k=1; k<=sum; k++){
switch (d) {
case -1:
a[i][j] = s++;
if(i<n-1){
i++;
}
else{
n--;
j++;
d = 0;
}
break;
case 0:
a[i][j] = s++;
if(i == (l-1)){
if(j<i){
j++;
}
else{
i--;
j--;
d = 1;
}
}
else if(a[i][j+1] == 0){
j++;
}
else{
i--;
j--;
d = 1;
}
break;
case 1:
a[i][j] = s++;
if(a[i-1][j-1] == 0){
i--;
j--;
}
else{
i++;
d = -1;
}
break;
default:
break;
}
}
for(int p=0; p<l; p++){
for(int q=0; q<=p; q++){
System.out.print(a[p][q] + " ");
}
System.out.println();
}
}
}
int[,] arr = new int[n, n];
arr[0, 0] = 1;
int X=0,Y=0;
for (int i = 0; i < n; i++)
{
for (int k = 0; k < n - i; k++)
{
if (i % 3 == 1)
{
arr[X, Y] = arr[X, Y - 1] + 1;
if (k == n - i - 1)
{
X--;
Y--;
break;
}
Y++;
}
if (i % 3 == 0)
{
if (X - 1 < 0)
{
X++;
continue;
}
arr[X, Y] = arr[X - 1, Y] + 1;
if (k == n - i - 1)
{
Y++;
break;
}
X++;
}
if (i % 3 == 2)
{
if (X < 0 || Y < 0)
continue;
arr[X, Y] = arr[X + 1, Y + 1] + 1;
if (k == n - i - 1)
{
X++;
break;
}
X--;
Y--;
}
}
}
int x = 0;
int y = 0;
int[,] A = new int[size, size]; for (int j = 0; j < size; j++)
{
for (int k = 0; k < size; k++)
{
A[j, k] = 0;
}
} int flag = size * (size + 1) / 2; while (i <= flag)
{
if (x + 1 < size)
{
if (A[x + 1, y] == 0)
{
A[x, y] = i;
i++;
x++;
continue;
}
} if (y + 1 < size)
{
if (y <= x)
{
if (A[x, y + 1] == 0)
{
A[x, y] = i;
i++;
y++;
continue;
}
}
} while (A[x, y] == 0)
{
A[x, y] = i;
i++;
if (A[x - 1, y - 1] == 0)
{
x--;
y--;
}
else
{
x++;
break;
}
}
} for (int j = 0; j < size; j++)
{
for (int k = 0; k <= j; k++)
{
Console.Write("{0}\t", A[j,k]);
if (j == k)
{
Console.WriteLine();
}
}
} Console.ReadLine();