输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。 接下来的N行,每行包括N个数,表示N*N矩阵的元素。
可能有多组测试数据,对于每组数据, 输出"Yes!”表示矩阵为对称矩阵。 输出"No!”表示矩阵不是对称矩阵。
4 16 19 16 6 19 16 14 5 16 14 16 3 6 5 3 16 2 1 2 3 4
Yes! No!
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[101][101];
int i,j;
//输入数据
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
//判断对称
int flag=1;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[i][j]!=a[j][i])
{
flag=0;
break;
}
}
}
if(flag==1)
printf("Yes!\n");
else
printf("No!\n");
}
return 0;
}
while True:
try:
a, matrix = int(input()), []
for i in range(a):
matrix.append(input().split())
res=True
for i in range(a):
for j in range(a):
if matrix[i][j]!=matrix[j][i]:
res=False
break
print("Yes!" if res else "No!")
except:
break
while True:
try:
a, matrix = int(input()), []
for i in range(a):
matrix.append(tuple(input().split()))
print("Yes!" if matrix==list(zip(*matrix)) else "No!")
except:
break
#include<stdio.h>//判断是否对称a[i][j]==a[j][i]
int main()
{
int n,a[100][100],i,j,key;
scanf("%d",&n);//输入
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
key=1;
for(i=0;i<n;i++)//遍历
for(j=i+1;j<n;j++)//直接对比上三角优化运行时间
if(a[i][j]!=a[j][i])
{
key=0;break;
}
if(key) printf("Yes!");
else printf("No!");
} #include <iostream>
using namespace std;
int main()
{
int N,flag=0;
cin>>N;
int **arr=new int*[N];
for(int i=0;i<N;++i){
arr[i]=new int[N];
for(int j=0;j<N;++j)
cin>>(arr[i])[j];
}
for(int i=0;i<N;++i){
for(int j=0;j<i;++j){
if((arr[i])[j]!=(arr[j])[i]){
++flag;
break;
}
}
}
if(flag==0)
cout<<"Yes!"<<endl;
else
cout<<"No!"<<endl;
for(int i=0;i<N;++i)
delete [] arr[i];
delete [] arr;
return 0;
}
int#include <stdio.h> #include <stdlib.h> #define N 100 int judge(int a[][N],int n); int main() { int a[N][N]; int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&a[i][j]); } } if(judge(a,n)==1) { printf("Yes!\n"); } else { printf("No!\n"); } } return 0; } int judge(int a[][N],int n) { int k=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i!=j) { if(a[i][j]==a[j][i]) { k++; } } } } if(k==n*n-n)return 1; else return 0; }
#include<bits/stdc++.h>
int a[101][101];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
int k=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(a[i][j]!=a[j][i]){
printf("No!\n");
k=1;break;
}
if(k==1)break;
}
if(k==0)printf("Yes!\n");
}
}
主要就是设置一个flag
#include <iostream>
#include <cstdio>
int num[101][101];
using namespace std;
int main(){
int n;
while(cin>>n){
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
cin>>num[i][j];
bool flag = true;
for(int i = 0;i < n;i++){
for(int j = i+1;j < n;j++){
if(num[i][j]!=num[j][i]){
flag = false;
break;
}
}
}
if(flag)
cout<<"Yes!"<<endl;
else
cout<<"No!"<<endl;
}
return 0;
}
#include<stdio.h>
const int maxn=110;
int A[maxn][maxn];
int main()
{
int N;
while(scanf("%d",&N)!=EOF){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
scanf("%d",&A[i][j]);
}
}int flag=1;
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(A[i][j]!=A[j][i]){
flag=0;break;
}
if(flag==0) break;
}
}
if(flag==1) printf("Yes!\n");
else printf("No!\n");
}
return 0;
} #include <iostream>
using namespace std;
int main(){
int matrix[101][101],n;
while(cin>>n){
int i,j;
bool flag=true;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>matrix[i][j];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(matrix[i][j]!=matrix[j][i]){
flag=false;
break;
}
}
}
if(flag) cout<<"Yes!"<<endl;
else cout<<"No!"<<endl;
}
return 0;
}
#include<stdio.h>
#define BUFFERSIZE 100
int main(void) {
int array[BUFFERSIZE][BUFFERSIZE] = {0};
int len = 0;
while (fscanf(stdin, "%d", &len) != EOF) {
for (int row = 0; row < len; row++)
{
for (int column = 0; column < len; column++)
fscanf(stdin, "%d", &array[row][column]);
}
bool flag = 1;
for (int row = 0; row < len; row++)
{
for (int column = 0; column < len; column++)
{
if (array[row][column] != array[column][row])
{
flag = 0;
break;
}
}
}
if (flag == 0) fprintf(stdout, "No!\n");
else fprintf(stdout, "Yes!\n");
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
int N;
while (cin >> N) {
int arr[N][N], flag = 0; //flag为对称标记,默认为0对称
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++) {
cin >> arr[i][j];
if ((i >0 && j < i) && arr[i][j] != arr[j][i])
flag = 1; //若所输入的元素已有输入的对称元素,即检查是否一致
}
if (flag)
cout << "No!" << endl;
else
cout << "Yes!" << endl;
}
}
#include<iostream>
using namespace std;
int main(){
int n;
while(cin>>n){
int **a=new int*[n];
for(int i=0;i<n;i++)
a[i]=new int[n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
bool judge=1;
for(int i=0;i<n&&judge;i++)
for(int j=i;j<n;j++)
if(a[i][j]!=a[j][i]){
cout<<"No!"<<endl;
judge=0;
break;
}
if(judge)
cout<<"Yes!"<<endl;
}
} package com.speical.first;
import java.util.Scanner;
/**
* 判断对称矩阵
*
* 注意我的循环的边界条件,对角线是不用参与比较,所以去掉
* @author Special
* @time 2018/02/10 17:28:02
*/
public class Pro217 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while(input.hasNext()) {
int n = input.nextInt();
int[][] nums = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
nums[i][j] = input.nextInt();
}
}
boolean flag = true;
for(int i = 1; i < n; i++) {
for(int j = 0; j < n - 1; j++) {
if(nums[i][j] != nums[j][i]) {
flag = false;
break;
}
}
}
System.out.println(flag ? "Yes!" : "No!");
}
}
}
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
while(cin >> n){
vector<vector<int>> matrix(n,vector<int>(n,0));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin >> matrix[i][j];
}
}
bool is_symmetry=true;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
if(matrix[i][j]!=matrix[j][i]){
is_symmetry=false;
break;
}
}
}
if(is_symmetry){
cout << "Yes!" << endl;
}else {
cout << "No!" << endl;
}
}
}