本文概述
- C++
- Java
- Python3
- C#
- C++
- Java
- Python3
- C#
- C++
- Java
- Python3
- C#
目的不是仅打印这种模式, 而是学习解决此类问题的最佳方法, 因为在编码考试和工作面试中经常会问这些问题。
例子:
Input: N = 4
Output:
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4Input: N = 7
Output:
7 7 7 7 7 7 7 7 7 7 7 7 7
7 6 6 6 6 6 6 6 6 6 6 6 7
7 6 5 5 5 5 5 5 5 5 5 6 7
7 6 5 4 4 4 4 4 4 4 5 6 7
7 6 5 4 3 3 3 3 3 4 5 6 7
7 6 5 4 3 2 2 2 3 4 5 6 7
7 6 5 4 3 2 1 2 3 4 5 6 7
7 6 5 4 3 2 2 2 3 4 5 6 7
7 6 5 4 3 3 3 3 3 4 5 6 7
7 6 5 4 4 4 4 4 4 4 5 6 7
7 6 5 5 5 5 5 5 5 5 5 6 7
7 6 6 6 6 6 6 6 6 6 6 6 7
7 7 7 7 7 7 7 7 7 7 7 7 7
对于本教程, 示例N = 4用来。
第1步:
首先, 分析任何对称线的图案。在这里, 我们的图案在垂直和水平方向上都是对称的, 所以绘制这样的对称线,
文章图片
将零件分成几部分后, 首先尝试仅绘制左上部分, 即A部分。如果没有任何对称线, 请跳至步骤2。
第2步:
现在, 将每个单元格(即元素)与行号和列号相关联(通常分别由i和j表示), 就像
文章图片
从现在开始, 一个单元格用C(i, j)表示, 其行号和列号为。
第三步:
在此步骤中, 尝试查找C(i, j)的值与i和/或j之间的关系。通常, C的值取决于N的值以及i和j的相对值。详细说明,
–在第一行中, 每个元素都是相同的, 即4(= N)。因此, 它没有太大帮助。
–在第二行中, 对于i> = j, 可以看到C从4减小到3, 然后对于下一个i = j, 它保持3, 然后对于所有j的值, 对于下一个i = j, 它保持2, 可以看到C从4减少到1。
因此, 在每一行中, C从N开始, 递减1直到i> = j, 然后变为常数。这里的C值取决于i和j之间的较小者, 公式可以是:
C(i, j) = N - min(i, j) + 1
因此, 我们的方法应该是:
C++
#include <
iostream>
using namespace std;
int main()
{
int N = 4, i, j, min;
cout <
<
"Value of N: " <
<
N <
<
endl;
for (i = 1;
i <
= N;
i++) {
for (j = 1;
j <
= N;
j++) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
cout <
<
endl;
}
return 0;
}
Java
//Java program to find triplets
//a[i]>
a[j]>
a[k] and i<
j<
k
import java.util.*;
class GFG
{//Driver code
public static void main(String[] args)
{
int N = 4 , i, j, min;
System.out.println( "Value of N: " + N);
for (i = 1 ;
i <
= N;
i++)
{
for (j = 1 ;
j <
= N;
j++)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
System.out.println();
}
}
}//This code is contributed by Princi Singh
Python3
# Python3 program to find triplets
# a[i]>
a[j]>
a[k] and i<
j<
k
if __name__ = = '__main__' :N = 4 ;
print ( "Value of N: " , N);
for i in range ( 1 , N + 1 ):
for j in range ( 1 , N + 1 ):
min = i if i <
j else j;
print (N - min + 1 , end = "");
print ();
# This code is contributed
# by PrinciRaj1992
C#
//C# program to find triplets
//a[i]>
a[j]>
a[k] and i<
j<
k
using System;
class GFG
{//Driver code
public static void Main(String[] args)
{
int N = 4, i, j, min;
Console.WriteLine( "Value of N: " + N);
for (i = 1;
i <
= N;
i++)
{
for (j = 1;
j <
= N;
j++)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
Console.WriteLine();
}
}
}//This code is contributed by PrinciRaj1992
输出如下:
Value of N: 4
4444
4333
4322
4321
如果图案没有任何对称性, 并且现在已经完成, 则说明工作已经完成。但是对于具有对称性的图案, 它们仍然不完整, 需要执行步骤4。
步骤4:
现在, 在图片中包括图案的B部分, 并将这些元素与列号关联。但不要按顺序分配列号, 而是给它们分配与A部分中为其镜像列分配的列号相同的列号。
文章图片
步骤5:
现在更改代码以附加到B部分。为此, 只需重新运行j = n-1至j = 1的内部循环。
C++
#include <
iostream>
using namespace std;
int main()
{
int N = 4, i, j, min;
cout <
<
"Value of N: " <
<
N <
<
endl;
for (i = 1;
i <
= N;
i++) {
for (j = 1;
j <
= N;
j++) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
for (j = N - 1;
j>
= 1;
j--) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
cout <
<
endl;
}
return 0;
}
Java
class GFG
{
public static void main(String[] args)
{
int N = 4 , i, j, min;
System.out.println( "Value of N: " + N);
for (i = 1 ;
i <
= N;
i++)
{
for (j = 1 ;
j <
= N;
j++)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
for (j = N - 1 ;
j>
= 1 ;
j--)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
System.out.println();
}
}
}//This code is contributed by PrinciRaj1992
Python3
N = 4 ;
print ( "Value of N: " , N);
for i in range ( 1 , N + 1 ):
for j in range ( 1 , N + 1 ):
min = i if i <
j else j;
print (N - min + 1 , end = "");
for j in range (N - 1 , 0 , - 1 ):
min = i if i <
j else j;
print (N - min + 1 , end = "");
print ();
# This code is contributed by Rajput-Ji
C#
using System;
class GFG
{
public static void Main(String[] args)
{
int N = 4, i, j, min;
Console.WriteLine( "Value of N: " + N);
for (i = 1;
i <
= N;
i++)
{
for (j = 1;
j <
= N;
j++)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
for (j = N - 1;
j>
= 1;
j--)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
Console.WriteLine();
}
}
}//This code is contributed by Rajput-Ji
输出如下:
Value of N: 4
4444444
4333334
4322234
4321234
步骤6:
现在, 在图片中包括图案的C和D部分, 并将这些元素与行号相关联, 方法与在步骤4中分配列号的方式相同。
文章图片
步骤7:
现在, 以与第5步相同的方式, 更改代码以追加C和D部分。为此, 只需重新运行外部循环(对于i = n-1至i = 1)。
C++
#include <
iostream>
using namespace std;
int main()
{
int N = 4, i, j, min;
cout <
<
"Value of N: " <
<
N <
<
endl;
for (i = 1;
i <
= N;
i++) {
for (j = 1;
j <
= N;
j++) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
for (j = N - 1;
j>
= 1;
j--) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
cout <
<
endl;
}
for (i = N - 1;
i>
= 1;
i--) {
for (j = 1;
j <
= N;
j++) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
for (j = N - 1;
j>
= 1;
j--) {
min = i <
j ? i : j;
cout <
<
N - min + 1;
}
cout <
<
endl;
}
return 0;
}
Java
//Java implementation of the approach
class GFG
{
public static void main(String[] args)
{
int N = 4 , i, j, min;
System.out.println( "Value of N: " + N);
for (i = 1 ;
i <
= N;
i++)
{
for (j = 1 ;
j <
= N;
j++)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
for (j = N - 1 ;
j>
= 1 ;
j--)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
System.out.println();
}for (i = N - 1 ;
i>
= 1 ;
i--)
{
for (j = 1 ;
j <
= N;
j++)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
for (j = N - 1 ;
j>
= 1 ;
j--)
{
min = i <
j ? i : j;
System.out.print(N - min + 1 );
}
System.out.println();
}
}
}//This code is contributed by 29AjayKumar
Python3
# Python3 implementation of the approach
N = 4
print ( "Value of N: " , N) for i in range ( 1 , N + 1 ):
for j in range ( 1 , N + 1 ):
min = i if i <
j else j
print (N - min + 1 , end = " " ) for j in range (N - 1 , 0 , - 1 ):
min = i if i <
j else j
print (N - min + 1 , end = " " )print ()for i in range (N - 1 , 0 , - 1 ):
for j in range ( 1 , N + 1 ):
min = i if i <
j else j
print (N - min + 1 , end = " " ) for j in range (N - 1 , 0 , - 1 ):
min = i if i <
j else j
print (N - min + 1 , end = " " )print ()# This code is contributed by sai prakash
C#
//C# implementation of the approach
using System;
class GFG
{
public static void Main(String[] args)
{
int N = 4, i, j, min;
Console.WriteLine( "Value of N: " + N);
for (i = 1;
i <
= N;
i++)
{
for (j = 1;
j <
= N;
j++)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
for (j = N - 1;
j>
= 1;
j--)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
Console.WriteLine();
}for (i = N - 1;
i>
= 1;
i--)
{
for (j = 1;
j <
= N;
j++)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
for (j = N - 1;
j>
= 1;
j--)
{
min = i <
j ? i : j;
Console.Write(N - min + 1);
}
Console.WriteLine();
}
}
}//This code is contributed by Rajput-Ji
【如何轻松学习图案打印()】输出如下:
Value of N: 4
4444444
4333334
4322234
4321234
4322234
4333334
4444444
推荐阅读
- Java中的Arrays.sort()用法示例
- SQL连接(笛卡尔连接和自连接用法示例)
- PHP startsWith()和endsWith()函数用法示例
- 本图文详细教程教你Ghost win10系统64位旗舰版密钥激活码
- win10一键安装win7系统图文详细教程图解
- 安装系统 U盘重装系统windows1064位旗舰版图文详细教程图解
- 深度系统win10纯净版64位最新推荐
- 本图文详细教程教你Ghost win764位与win10系统哪个好用
- 萝卜家园win10系统64位旗舰版最新推荐