本文概述
- 建议:在继续解决方案之前, 请先在{IDE}上尝试使用你的方法。
- C ++
- Java
- Python3
- C#
- 的PHP
例子:
Input : n = 1Output : xInput : n = 2Output : x x x x Input: n = 5Output:xx o x o x x o x o x x o x o x x Input: n = 6Output:x x o x o x x o x x o x x o x x o x x o x o x xInput : n = 7;
Output :x x o x o x x o x x o x x o x o x o x x o x x o x x o x o x x Input : n = 8;
Output : x x o x o x x o x x o x o x o x x o x o o x o x x o x o x o x x o x x o x o x x
推荐:请尝试以下方法{IDE}首先, 在继续解决方案之前。我们可以将此问题分为三个部分:
1)用奇数n的n-1行或偶数n的n-2行打印上半部分。
2)打印中间行, 奇数n为1行, 偶数n为3行。
3)打印下半部分, 对奇数n用n-1行, 对于偶数n用n-2行。
对于这种复杂的模式, 如果我们可以使用基于1的索引可能会更容易
以及单独的功能来打印以x或o开头的字符。
C ++
// Author:: Satish Srinivas
#include <
iostream>
using namespace std;
// print alternate x o beginning with x
void printx( int n)
{
for ( int i = 1;
i <
= n;
i++) {
if (i % 2 != 0)
cout <
<
"x " ;
else
cout <
<
"o " ;
}
return ;
}// print alternate x o beginning with o
void printo( int n)
{
for ( int i = 1;
i <
= n;
i++) {
if (i % 2 != 0)
cout <
<
"o " ;
else
cout <
<
"x " ;
}
return ;
}// print the pattern for n
void printPattern( int n)
{
// upper half
// n-1 lines for odd, n-2 lines for even
int x = n;
if (n % 2 == 0)
x = x - 1;
// number of spaces to leave in each line
int p = n - 1;
// number of characters in each line
int s = 1;
// prints double lines in each iteration
for ( int i = 1;
i <
= (x - 1) / 2;
i++) {
for ( int j = 1;
j <
= p;
j++) {
cout <
<
" " ;
}if (i % 2 != 0)
printx(s);
else
printo(s);
cout <
<
endl;
p++;
for ( int j = 1;
j <
= p;
j++)
cout <
<
" " ;
if (i % 2 != 0)
printx(s);
else
printo(s);
cout <
<
endl;
p--;
s++;
}// extra upper middle for even
if (n % 2 == 0) {
for ( int i = 1;
i <
= p;
i++)
cout <
<
" " ;
if (n % 4 != 0)
printx(n / 2);
else
printo(n / 2);
cout <
<
endl;
}// middle line
if (n % 2 != 0)
printx(n);
else {
if (n % 4 != 0) {
printx(n / 2);
printx(n / 2);
}
else {
printx(n / 2);
printo(n / 2);
}
}cout <
<
endl;
// extra lower middle for even
if (n % 2 == 0) {
cout <
<
" " ;
printx(n / 2);
cout <
<
endl;
}// lower half
p = 1;
if (n % 2 == 0) {
x--;
p = 2;
}int q = x / 2;
// one line for each iteration
for ( int i = 1;
i <
= x;
i++) {
for ( int j = 1;
j <
= p;
j++)
cout <
<
" " ;
printx(q);
if (i % 2 == 0)
q--;
cout <
<
endl;
p++;
}cout <
<
endl;
}// Driver code
int main()
{
int n = 7;
printPattern(n);
n = 8;
printPattern(n);
return 0;
}
Java
// java program to Print symmetric
// double triangle pattern
class GFG
{// print alternate x o beginning with x
static void printx( int n)
{
for ( int i = 1 ;
i <
= n;
i++) {
if (i % 2 != 0 )
System.out.print( "x " );
else
System.out.print( "o " );
}
return ;
}// print alternate x o beginning with o
static void printo( int n)
{
for ( int i = 1 ;
i <
= n;
i++) {
if (i % 2 != 0 )
System.out.print( "o " );
else
System.out.print( "x " );
}
return ;
}// print the pattern for n
static void printPattern( int n)
{
// upper half n-1 lines for
// odd, n-2 lines for even
int x = n;
if (n % 2 == 0 )
x = x - 1 ;
// number of spaces to leave in each line
int p = n - 1 ;
// number of characters in each line
int s = 1 ;
// prints double lines in each iteration
for ( int i = 1 ;
i <
= (x - 1 ) / 2 ;
i++) {
for ( int j = 1 ;
j <
= p;
j++) {
System.out.print( " " );
}if (i % 2 != 0 )
printx(s);
else
printo(s);
System.out.println();
p++;
for ( int j = 1 ;
j <
= p;
j++)
System.out.print( " " );
if (i % 2 != 0 )
printx(s);
else
printo(s);
System.out.println();
p--;
s++;
}// extra upper middle for even
if (n % 2 == 0 ) {
for ( int i = 1 ;
i <
= p;
i++)
System.out.print( " " );
if (n % 4 != 0 )
printx(n / 2 );
else
printo(n / 2 );
System.out.println();
}// middle line
if (n % 2 != 0 )
printx(n);
else {
if (n % 4 != 0 ) {
printx(n / 2 );
printx(n / 2 );
}
else {
printx(n / 2 );
printo(n / 2 );
}
}System.out.println();
// extra lower middle for even
if (n % 2 == 0 ) {
System.out.print( " " );
printx(n / 2 );
System.out.println();
}// lower half
p = 1 ;
if (n % 2 == 0 ) {
x--;
p = 2 ;
}int q = x / 2 ;
// one line for each iteration
for ( int i = 1 ;
i <
= x;
i++) {
for ( int j = 1 ;
j <
= p;
j++)
System.out.print( " " );
printx(q);
if (i % 2 == 0 )
q--;
System.out.println();
p++;
}System.out.println();
} // Driver code
public static void main (String[] args)
{
int n = 7 ;
printPattern(n);
n = 8 ;
printPattern(n);
}
}// This code is contributed by Anant Agarwal.
Python3
# Python3 program to Print symmetric
# double triangle pattern# Print alternate x o beginning with x
def printx(n):for i in range ( 1 , n + 1 ):
if (i % 2 ! = 0 ):
print ( "x " , end = "")
else :
print ( "o " , end = "")return# Print alternate x o beginning with o
def printo(n):for i in range ( 1 , n + 1 ):
if (i % 2 ! = 0 ):
print ( "o " , end = "")
else :
print ( "x " , end = "")return# Print the pattern for n
def printPattern(n):# upper half
# n-1 lines for odd, # n-2 lines for even
x = nif (n % 2 = = 0 ):
x = x - 1# number of spaces to leave
# in each line
p = n - 1# number of characters in each line
s = 1# prints double lines in each iteration
for i in range ( 1 , (x - 1 ) / / 2 + 1 ):
for j in range ( 1 , p + 1 ):
print ( " " , end = "")if (i % 2 ! = 0 ):
printx(s)
else :
printo(s)print ()
p + = 1for j in range ( 1 , p + 1 ):
print ( " " , end = "")if (i % 2 ! = 0 ):
printx(s)
else :
printo(s)print ()p - = 1
s + = 1# extra upper middle for even
if (n % 2 = = 0 ):
for i in range ( 1 , p + 1 ):
print ( " " , end = "")if (n % 4 ! = 0 ):
printx(n / / 2 )
else :
printo(n / / 2 )print ()# middle line
if (n % 2 ! = 0 ):
printx(n)
else :
if (n % 4 ! = 0 ):
printx(n / / 2 )
printx(n / / 2 )
else :
printx(n / / 2 )
printo(n / / 2 )print ()# extra lower middle for even
if (n % 2 = = 0 ):
print ( " " , end = "")
printx(n / / 2 )
print ()# lower half
p = 1if (n % 2 = = 0 ):
x - = 1
p = 2q = x / / 2# one line for each iteration
for i in range ( 1 , x + 1 ):
for j in range ( 1 , p + 1 ):
print ( " " , end = "")printx(q)if (i % 2 = = 0 ):
q - = 1print ()p + = 1print ()# Driver code
n = 7
printPattern(n)
n = 8
printPattern(n)# This code is contributed by mohit kumar
C#
// C# program to Print symmetric
// double triangle pattern
using System;
class GFG
{// print alternate x o beginning with x
static void printx(int n)
{
for (int i = 1;
i <
= n;
i++) {
if (i % 2 != 0)
Console.Write("x ");
else
Console.Write("o ");
}
return;
}// print alternate x o beginning with o
static void printo(int n)
{
for (int i = 1;
i <
= n;
i++) {
if (i % 2 != 0)
Console.Write("o ");
else
Console.Write("x ");
}
return;
}// print the pattern for n
static void printPattern(int n)
{
// upper half n-1 lines for
// odd, n-2 lines for even
int x = n;
if (n % 2 == 0)
x = x - 1;
// number of spaces to leave in each line
int p = n - 1;
// number of characters in each line
int s = 1;
// prints double lines in each iteration
for (int i = 1;
i <
= (x - 1) / 2;
i++) {
for (int j = 1;
j <
= p;
j++) {
Console.Write(" ");
}if (i % 2 != 0)
printx(s);
else
printo(s);
Console.WriteLine();
p++;
for (int j = 1;
j <
= p;
j++)
Console.Write(" ");
if (i % 2 != 0)
printx(s);
else
printo(s);
Console.WriteLine();
p--;
s++;
}// extra upper middle for even
if (n % 2 == 0) {
for (int i = 1;
i <
= p;
i++)
Console.Write(" ");
if (n % 4 != 0)
printx(n / 2);
else
printo(n / 2);
Console.WriteLine();
}// middle line
if (n % 2 != 0)
printx(n);
else {
if (n % 4 != 0) {
printx(n / 2);
printx(n / 2);
}
else {
printx(n / 2);
printo(n / 2);
}
}Console.WriteLine();
// extra lower middle for even
if (n % 2 == 0) {
Console.Write(" ");
printx(n / 2);
Console.WriteLine();
}// lower half
p = 1;
if (n % 2 == 0) {
x--;
p = 2;
}int q = x / 2;
// one line for each iteration
for (int i = 1;
i <
= x;
i++) {
for (int j = 1;
j <
= p;
j++)
Console.Write(" ");
printx(q);
if (i % 2 == 0)
q--;
Console.WriteLine();
p++;
}Console.WriteLine();
} // Driver code
public static void Main ()
{
int n = 7;
printPattern(n);
n = 8;
printPattern(n);
}
}// This code is contributed by vt_m.
的PHP
<
?php
// PHP program to Print symmetric
// double triangle pattern// print alternate x o
// beginning with x
function printx( $n )
{
for ( $i = 1;
$i <
= $n ;
$i ++)
{
if ( $i % 2 != 0)
echo "x " ;
else
echo "o " ;
}
return ;
}// print alternate x o
// beginning with o
function printo( $n )
{
for ( $i = 1;
$i <
= $n ;
$i ++)
{
if ( $i % 2 != 0)
echo "o " ;
else
echo "x " ;
}
}// print the pattern for n
function printPattern( $n )
{
// upper half
// n-1 lines for odd, // n-2 lines for even
$x = $n ;
if ( $n % 2 == 0)
$x = $x - 1;
// number of spaces to
// leave in each line
$p = $n - 1;
// number of characters
// in each line
$s = 1;
// prints double lines
// in each iteration
for ( $i = 1;
$i <
= ( $x - 1) / 2;
$i ++)
{
for ( $j = 1;
$j <
= $p ;
$j ++)
{
echo " " ;
}if ( $i % 2 != 0)
printx( $s );
else
printo( $s );
echo "\n" ;
$p ++;
for ( $j = 1;
$j <
= $p ;
$j ++)
echo " " ;
if ( $i % 2 != 0)
printx( $s );
else
printo( $s );
echo "\n" ;
$p --;
$s ++;
}// extra upper middle
// for even
if ( $n % 2 == 0) {
for ( $i = 1;
$i <
= $p ;
$i ++)
echo " " ;
if ( $n % 4 != 0)
printx( $n / 2);
else
printo( $n / 2);
echo "\n" ;
}// middle line
if ( $n % 2 != 0)
printx( $n );
else {
if ( $n % 4 != 0)
{
printx( $n / 2);
printx( $n / 2);
}
else {
printx( $n / 2);
printo( $n / 2);
}
}echo "\n" ;
// extra lower middle for even
if ( $n % 2 == 0) {
echo " " ;
printx( $n / 2);
echo "\n" ;
}// lower half
$p = 1;
if ( $n % 2 == 0)
{
$x --;
$p = 2;
}$q = floor ( $x / 2);
// one line for each iteration
for ( $i = 1;
$i <
= $x ;
$i ++)
{
for ( $j = 1;
$j <
= $p ;
$j ++)
echo " " ;
printx( $q );
if ( $i % 2 == 0)
$q --;
echo "\n" ;
$p ++;
}echo "\n" ;
}// Driver code
$n = 7;
printPattern( $n );
$n = 8;
printPattern( $n );
// This code is contributed by mits
?>
输出如下:
x x o x o x x o x x o x x o x o x o x x o x x o x x o x o x x x x o x o x x o x x o x o x o x x o x o o x o x x o x o x o x x o x x o x o x x
【算法设计(打印对称双三角图案)】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- 如何检测Angular中@Input()值何时更改()
- jQuery :first-child第一个元素选择器用法
- 算法设计(模幂(递归)介绍和代码实现)
- Java中的编译时和运行时多态之间的区别
- C++标准模板库(STL)中的双端队列用法介绍
- 大厂面试题,热门前端React面试题及答案详细解析
- 面试必问!最新前端Vue面试题大全及答案详解
- 给定一个二叉搜索树(BST),找到树中第 K 小的节点
- 大厂面试题(已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位)