注:系统标识符和自定义标识符都只计为一个字符。即:“int”和“System.Int32”都只算一个字符。
可以引用任何一个.NET自带的程序库,但不允许使用第三方控件和程序库。建议使用VS2005和VS2008环境。
调试代码:
private void PrintBox()
{
// TODO : 自由发挥
}private void button1_Click(object sender, EventArgs e)
{
PrintBox();
}
可以引用任何一个.NET自带的程序库,但不允许使用第三方控件和程序库。建议使用VS2005和VS2008环境。
调试代码:
private void PrintBox()
{
// TODO : 自由发挥
}private void button1_Click(object sender, EventArgs e)
{
PrintBox();
}
{
static Dictionary<string, int> buff; static void Main(string[] args)
{
do
{
Console.Write("输入一个整数...");
int x = int.Parse(Console.ReadLine());
buff = new Dictionary<string, int>();
int y = think(x, 1);
print(y);
} while (true);
} static void print(int 行数)
{
for (int i = 1; i <= 行数; i++)
{
for (int h = 1; h <= 行数; h++)
Console.Write(buff[i.ToString() + "," + h.ToString()]);
Console.WriteLine();
}
} static int think(int x, int 开始行)
{
if (x == 1)
{
buff.Add(开始行.ToString() + "," + 开始行.ToString(), 1);
return 开始行;
}
else
{
int e = think(x - 1, 开始行 + 1);
for (int i = 开始行; i <= e + 1; i++)
{
buff.Add(开始行.ToString() + "," + i.ToString(), x);
buff.Add((e + 1).ToString() + "," + i.ToString(), x);
}
for (int i = 开始行 + 1; i <= e; i++)
{
buff.Add(i.ToString() + "," + 开始行.ToString(), x);
buff.Add(i.ToString() + "," + (e + 1).ToString(), x);
}
return e + 1;
}
}
}
2、你的代码期望填写在PrintBox()方法中。
感谢参与。private void PrintBox()
{
// TODO : 自由发挥《《《《我期望大家在这里添加代码,输出1-9的图像。
}private void button1_Click(object sender, EventArgs e)
{
PrintBox();
}就是说图形是固定的,不需要用户在输入什么。
static Dictionary<string, int> buff;static void print(int 行数)
{
for (int i = 1; i <= 行数; i++)
{
for (int h = 1; h <= 行数; h++)
Console.Write(buff[i.ToString() + "," + h.ToString()]);
Console.WriteLine();
}
Console.WriteLine("-------");
}static int think(int x, int 开始行)
{
if (x == 1)
{
buff.Add(开始行.ToString() + "," + 开始行.ToString(), 1);
return 开始行;
}
else
{
int e = think(x - 1, 开始行 + 1);
for (int i = 开始行; i <= e + 1; i++)
{
buff.Add(开始行.ToString() + "," + i.ToString(), x);
buff.Add((e + 1).ToString() + "," + i.ToString(), x);
}
for (int i = 开始行 + 1; i <= e; i++)
{
buff.Add(i.ToString() + "," + 开始行.ToString(), x);
buff.Add(i.ToString() + "," + (e + 1).ToString(), x);
}
return e + 1;
}
}private void PrintBox_sp1234_4楼()
{
for (int x = 1; x <= 9; x++)
{
buff = new Dictionary<string, int>();
int y = think(x, 1);
print(y);
}
}
class Program
{
static void Main(string[] args)
{
print();
Console.Read();
} private static void print()
{
for( int i=0 ; i<9;i++)
{
for (int j = 0; j < 2 * i + 1; j++)
{
for (int k = 0; k < 2 * i + 1; k++ )
{
int tempj, tempk;
if (j < i)
tempj = i - j ;
else
tempj = j - i;
if (k < i)
tempk = i - k ;
else
tempk = k - i;
Console.Write(tempj > tempk ? tempj+1 : tempk+1);
Console.Write(" "); }
Console.Write("\r\n");
}
Console.WriteLine("---------------------------------");
}
}
}
class Program
{
static void Main(string[] args)
{
PrintBox(9);
}
static void PrintBox(int n)
{
int[,] a = CreatArray(n);
for (int i = 0; i < 2 * n - 1; i++)
{
for (int j = 0; j < 2 * n - 1; j++)
{
Console.Write(a[i,j]);
}
Console.WriteLine();
}
}
static int[,] CreatArray(int n)
{
int d = 2 * n - 1;
int[,] a = new int[d, d];
if (n == 1)
{
a[0, 0] = 1;
return a;
}
int[,] t = CreatArray(n - 1);
for(int i = 0;i < d;i++)
for (int j = 0; j < d; j++)
{
if (i > 0 && i < d - 1 && j > 0 && j < d - 1)
a[i, j] = t[i-1, j-1];
else
a[i, j] = n;
}
return a;
}
}
递归 n_n
private void PrintBox()
{
// TODO : 自由发挥
for (int k = 1; k <= 9; k++)
{
for (int i = 0; i <= 2 * k - 2; i++)
{
for (int j = 0; j <= k * 2 - 2; j++)
{
Console.Write(Convert.ToString(Math.Abs(k - 1 - ((Math.Abs(k - i - 1) >= Math.Abs(k - j - 1)) ? i : j)) + 1));
}
Console.WriteLine();
}
Console.WriteLine("-------");
}
}private void button1_Click(object sender, EventArgs e)
{
PrintBox();
}
using System.Text;
using System.Windows.Forms;
using System.Collections.Generic;class Hui
{ static void printbox(int n)
{
int cntLine = 2*n-1;
int halfLine = cntLine/2;
Func<int,string> getLine =(cl)=>
{
var strLeft = new StringBuilder();
var strRight = new StringBuilder();
int ccolum = -1;
for (int i =0;i<halfLine;++i) {
int curNum = n-(ccolum==cl?ccolum:++ccolum);
strLeft.Append(curNum);
strRight.Insert (0,curNum);
}
strLeft.AppendFormat ("{0}{1}",n - cl,strRight);
return strLeft.ToString();
};
for (int i = 0;i<cntLine;++i)
{
Console.WriteLine (getLine(i>halfLine?cntLine-i-1:i));
}
}
static void Main ()
{
for (int i=1;i<10;++i) {
printbox (i);
Console.WriteLine ("----------------------------------------");
}
}
}
private void PrintBox()
{
for (int k = 1; k <= 9; k++)
{
for (int i = 1; i < k * 2; i++)
{
for (int j = 1; j < k * 2; j++)
{
Console.Write(Convert.ToString(Math.Abs(k - ((Math.Abs(k - i) >= Math.Abs(k - j)) ? i : j)) + 1));
}
Console.WriteLine();
}
Console.WriteLine("-------");
}
}private void button1_Click(object sender, EventArgs e)
{
PrintBox();
}
private void PrintBox()
{
for (int i = 1; i <= 9; i++)
{
int[,] array = new int[i * 2 - 1, i * 2 - 1];
array[i - 1, i - 1] = 1;
for (int j = 0; j < i * 2 - 1; j++)
for (int k = 0; k < i * 2 - 1; k++)
{
array[j, k] = Math.Max(Math.Abs(j - i + 1), Math.Abs(k - i + 1)) + 1;
if (k != i * 2 - 2)
Console.Write(array[j, k]);
else
Console.WriteLine(array[j, k]);
}
Console.WriteLine("----------");
}
}
{
for (int i = 1; i <= 9; i++)
for (int j = 0; j < i * 2 - 1; j++)
for (int k = 0; k < i * 2 - 1; k++)
Console.Write(Math.Max(Math.Abs(j - i + 1), Math.Abs(k - i + 1)) + 1 + (k == i * 2 - 2 ? j == i * 2 - 2 ? "\n------\n" : "\n" : ""));
}
我也改了一下:
for (int i = 0; i < 9; i++)
for (int j = -i; j <= i; j++)
for (int k = -i; k <= i; k++)
Console.Write(Math.Max(Math.Abs(j), Math.Abs(k)) + 1 + (k == i ? j == i ? "\n------\n" : "\n" : ""));
我也改了一下…
for (int i = 0; i < 9; i++)
for (int j = -i; j <= i; j++)
for (int k = -i; k <= i; k++)
Console.Write(Math.Max(Math.Abs(j), Math.Abs(k))
+ 1
+ (k == i ? j == i ? "\n------\n" : "\n" : ""));
{
// TODO : 自由发挥
Console.WriteLine(@"1
-------
222
212
222
-------
33333
32223
32123
32223
33333
-------
4444444
4333334
4322234
4321234
4322234
4333334
4444444
-------
555555555
544444445
543333345
543222345
543212345
543222345
543333345
544444445
555555555
-------
66666666666
65555555556
65444444456
65433333456
65432223456
65432123456
65432223456
65433333456
65444444456
65555555556
66666666666
-------
7777777777777
7666666666667
7655555555567
7654444444567
7654333334567
7654322234567
7654321234567
7654322234567
7654333334567
7654444444567
7655555555567
7666666666667
7777777777777
-------
888888888888888
877777777777778
876666666666678
876555555555678
876544444445678
876543333345678
876543222345678
876543212345678
876543222345678
876543333345678
876544444445678
876555555555678
876666666666678
877777777777778
888888888888888
-------
99999999999999999
98888888888888889
98777777777777789
98766666666666789
98765555555556789
98765444444456789
98765433333456789
98765432223456789
98765432123456789
98765432223456789
98765433333456789
98765444444456789
98765555555556789
98766666666666789
98777777777777789
98888888888888889
99999999999999999 ");
}
{
for (int i = 0; i < num * 2 - 1; i++)
{
for (int j = 0; j < num * 2 - 1; j++)
{ Console.Write(Math.Max(Math.Abs(i - num + 1), Math.Abs(j - num + 1)) + 1);
}
Console.WriteLine();
}
}
{
for (int num = 1; num < 10; num++)
{
int n = num * 2 - 1;
for (int i = 0; i < n * n; )
{
Console.Write((Math.Max(Math.Abs(i % n - num + 1), Math.Abs(i / n - num + 1)) + 1) + (++i % n == 0 ? "\n" : ""));
}
Console.Write("-------\n");
}
}
static void printbox()
{
for (int x = 1; x < 10; x++)
{
int n = x * 2 - 1;
for (int i = 0; i < n * n; )
Console.Write((Math.Max(Math.Abs(i % n - x + 1), Math.Abs(i / n - x + 1)) + 1) + (++i % n == 0 ? "\n" : ""));
Console.Write("-------\n");
}
}
最简化了 n_n
看来最简化的公式看来只有以下两个了.
1. Math.Max(Math.Abs(i - num + 1), Math.Abs(j - num + 1)) + 1
2. (Math.Max(Math.Abs(i % n - x + 1), Math.Abs(i / n - x + 1)) + 1) + (++i % n == 0 ? "\n" : "")
void PrintBox()
{
PrintBox(Console.Out);
} void PrintBox(TextWriter writer)
{
StringBuilder line;
string[] lines;
for (int num = 1; num <= 9; num++)
{
lines = new string[num * 2 - 1];
line = new StringBuilder(new string(' ', num * 2 - 1));
for (int l = num; l > 0; l--)
{
for (int c = num; c > 0; c--)
line[num - c] = line[num + c - 2] = (char)((l > c ? l : c) + 48);
lines[num - l] = lines[num + l - 2] = line.ToString();
}
writer.WriteLine(string.Join("\n", lines));
writer.WriteLine(new string('-', 8));
}
}
static void Print(string[] args)
{
int rank = GetRank(Number);
int[,] matrix = new int[rank, rank]; for (int i = Number; i > 0; i--)
{
SetMatric(matrix, rank, i);
} PrintResult(rank, matrix);
}private static int GetRank(int n)
{
return n * 2 - 1;
}private static void SetMatric(int[,] matrix, int rank, int n)
{
int row1 = Number - n;
int row2 = rank - (Number - n) - 1;
int colOffice = Number - n;
int count = GetRank(n); for (int i = 0; i < count; i++)
{
matrix[row1, colOffice + i] = n; // 上面行
matrix[row2, colOffice + i] = n;// 下面行 if (i < count - 2)
{
matrix[row1 + i + 1, colOffice] = n;// 左列
matrix[row1 + i + 1, rank - colOffice - 1] = n;// 右列
}
}
}private static void PrintResult(int rank, int[,] matrix)
{
for (int i = 0; i < rank; i++)
{
for (int j = 0; j < rank; j++)
{
Console.Write(matrix[i, j]);
}
Console.Write(Environment.NewLine);
}
}
using System;
class MyClass
{
public static int[,] output(int n)
{
int[,] final = new int[n * 2 - 1,n * 2 - 1];
for (int i = n; i >= 1; i--)
{
for (int y = 0; y < i * 2 - 1; y++)
{
for (int x = 0; x < i * 2 - 1; x++)
{
final[x + n - i, y + n - i] = i;
}
}
}//核心代码只有这么多,下面是打印
for (int y = 0; y < n * 2 - 1; y++)
{
for (int x = 0; x < n * 2 - 1; x++)
{
Console.Write(final[x,y]);
}
Console.Write("\n");
}
}
static void Main()
{
output(10);
}
}
private void PrintBox_zswang_73楼()
{
string s = "98765432123456789";
for (char j = '2'; j < ';'; j++)
{
string t = Regex.Replace(s, "[" + j + "-:]", "");
for (int i = 0; i < t.Length; i++)
Console.WriteLine(
Regex.Replace(t, "[1-" + t[i] + "]", t[i].ToString()));
Console.WriteLine("-------");
}
}
这个猛。不过代码和下面的差不多for (int i = 0; i < 9; i++)
{
for (int j = 0; j < i * 2 + 1; j++)
{
for (int k = 0; k < i * 2 + 1; k++)
Console.Write(1 + Math.Max(Math.Abs(j - i), Math.Abs(k - i)));
Console.WriteLine();
}
Console.WriteLine("-------");
}
{
static void Main(string[] args)
{
test();
Console.ReadKey();
}
static void test()
{
for (int i = 1; i < 10; i++) {
int[,] result = new int[i * 2 - 1, i * 2 - 1]; print(result, i * 2 - 1, 0, 0, i);
test1(result, i); Console.WriteLine("===============================");
}
}
static void print(int[,] r,int rank,int row,int column,int ran)
{
if (rank == 1) {
r.SetValue(1, row, column);
return;
}
for (int i = row; i < rank; i++)
{
for (int j = column; j < rank; j++)
{
if (i == row || j == column || i == rank - 1 || j == rank - 1) r.SetValue(ran, i, j);
}
} print(r, rank - 1, row + 1, column + 1, ran - 1);
}
static void test1(int[,] t, int rank) {
for (int i = 0; i < rank*2-1; i++)
{
for (int j = 0; j < rank * 2 - 1; j++)
{
Console.Write(t.GetValue(i,j)); }
Console.WriteLine();
}
}
}
public static void main(String[] args) {
for(int n = 1; n < 10; n++) {
for (int i = 0 - (n - 1); i < n; i++) {
for (int j = 0 - (n - 1); j < n; j++) {
System.out.print(Math.abs(i) >= Math.abs(j) ? Math.abs(i) + 1 : Math.abs(j) + 1);
}
System.out.println();
}
System.out.println("-------");
}
}
}
发下我的代码 public void Print(int iCount)
{
int iRow = 2 * iCount - 1;
int[,] array = new int[iRow, iRow]; for (int i = 0; i <iCount ; i++)
{
for (int j = i; j < iRow - i; j++)
{
// 数据填充部分
array[i, j] = iCount - i;
array[iRow - 1 - i, j] = iCount - i; array[j, i] = iCount - i;
array[j, iRow - 1 - i] = iCount - i;
}
} for (int i = 0; i < iRow; i++)
{
for (int j = 0; j < iRow; j++)
{
Console.Write(array[i, j].ToString() + " ");
}
Console.WriteLine();
}
}
{
for (int i = 1; i < 10; i++)
{
foreach (var item in PrintBoxCore(i))
{
Console.WriteLine(item);
}
Console.WriteLine("-----");
}
} private IEnumerable<string> PrintBoxCore(int i)
{
string s = i.ToString();
if (i == 1)
{
yield return s;
}
else
{
yield return new string(s[0], i * 2 - 1);
foreach (var item in PrintBoxCore(i - 1))
{
yield return s + item + s;
}
yield return new string(s[0], i * 2 - 1);
}
}
#define T 8
#define N T*2+1
int M=N;
int arr[N][N]={0};
while(M>0)
{
for(int i=N-M;i<M;i++)
{
for(int j=N-M;j<M;j++)
{
arr[i][j]=M-T;
}
}
M--;
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
先贴 自己的破代码逻辑比较简单 =.= 比较土...在学习在ls的各位算法....
#include<iostream>using namespace std;void PrintBox(int n)
{
for(int i = 1; i <= 2 * (n - 1) + 1; i++)
{
int m = i > n ? 2 * n - i:i;
int j = n - m + 1;
for(int k = n; k > j; k--)
cout<<k;//每行的递减部分
for(int k = 1; k <= 2 * (j - 1) + 1; k++)
cout<<j;//每行的相等部分,输出每个数的第一行 都为2 * (j - 1) + 1次
for(int k = j + 1; k <= n; k++)
cout<<k;//每行的递增部分
cout<<endl;
}
}
int main()
{
for(int i = 1; i < 10; i++)
{
PrintBox(i);
cout<<endl;
cout<<"----------------------------------";
cout<<endl;
}
return 0;
}
static void PrintBox(int m)
{
for (int n=1;n<=m;n++)
{
int p=2*n-1;
for (int i=1;i<=p;i++)
for (int j=1;j<=p;j++)
Console.Write(Math.Max(Math.Abs(n-i),Math.Abs(n-j))+1);
Console.Write("\n");
Console.Write("-------\n");
}
}
{
for (int n=1;n<=m;n++)
{
int p=2*n-1;
for (int i=1;i<=p;i++)
{
for (int j=1;j<=p;j++)
Console.Write(Math.Max(Math.Abs(n-i),Math.Abs(n-j))+1);
Console.Write("\n");
}
Console.Write("-------\n");
}
}
{
for (int n=1;n<=m;n++)
{
int p=2*n-1;
for (int i=1;i<=p;i++)
{
for (int j=1;j<=p;j++)
Console.Write(Math.Max(Math.Abs(n-i),Math.Abs(n-j))+1);
Console.Write("\n");
}
Console.Write("-------\n");
}
}
{
for (int n=1;n<=m;n++)
{
int p=2*n-1;
for (int i=1;i<=p;i++)
{
for (int j=1;j<=p;j++)
Console.Write(Math.Max(Math.Abs(n-i),Math.Abs(n-j))+1);
Console.Write("\n");
}
Console.Write("-------\n");
}
}