横竖对折方阵
import com.sun.source.util.SourcePositions;
import java.io.Console;
import java.util.Scanner;
public class _20 {
public static void main(String[] args) {
int[][] a = new int[8][8];
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = (n / 2) + 1;
for (int i = 1; i < 8; ++i) {
for (int j = 1; j < 8; ++j) {
if ((i + j) <= n+1 && i <= j || (i + j) >= n+1&& i >= j) {
a[i][j] = m - Math.abs(m - j);
}
if (i > j && i + j < n+1 || i < j && (i + j) >n+1) {
a[i][j] = m - Math.abs(m - i);
}
}
}
for(int i=1;i<8;++i){
for(int j=1;j<8;++j){
System.out.print(a[i][j]);
}
System.out.println('\n');
}
}
}
斜折对称方程
import javax.swing.plaf.synth.SynthOptionPaneUI;
import java.util.Scanner;
public class _20{
private static final int MAX=20;
public static void main(String[] args) {
int [][]a=new int[MAX][MAX];
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=(n/2)+1;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j) {
if (i <= m && j <= m || i >= m && j >= m) {
a[i][j] = Math.abs(i - j);
}
if (i <= m && j >= m || i >= m && j <= m) {
a[i][j] = Math.abs(i + j - n - 1);
}
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
对称矩阵
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char **argv) {
int a[10][10];
memset(&a, 0, sizeof(a));
int n;
cin >> n;
int m = (n / 2) + 1;
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j) {
if (i == j || (i + j) == n - 1) {
a[i][j] = 0;
continue;
}
/* if (i + j < n && i < j || i + j > n && i > j)
a[i][j] = i + 1;
if (i + j < n && i > j || i + j > n && i < j)
a[i][j] = j;
*/
if (i + j < n && i < j)
a[i][j] = i + 1;
if (i + j >= n && i > j)
a[i][j] = n - i;
if (i + j < n && i > j)
a[i][j] = j + 1;
if (i + j >= n && i < j)
a[i][j] = n - j;
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j)
cout << a[i][j];
cout << endl;
}
return 0;
}