NOI刷题平台全题解(1.8编程基础之多维数组完整版)

这篇博客提供了C++版的NOI刷题平台从1.8开始的题解,涵盖矩阵交换行、计算矩阵边缘元素之和等25道题目,详细解析了每道题目并附带AC代码。读者可以访问noi.openjudge.cn进行刷题实践。
摘要由CSDN通过智能技术生成

由于之前1.1~1.7的题解有太多人发了,于是我干脆就直接跳过了前面的,直接从1.8开始发啦。
C++版AC代码奉上。刷题网址:noi.openjudge.cn
(本文为完整版,T1-T25全有。)
01:矩阵交换行

#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[5][5],n,m;
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cin>>a[i][j];
}
}
cin>>m>>n;
for(int i=m-1;i<m;i++)
{
for(int j=0;j<5;j++)
{
swap(a[i][j],a[n-1][j]);
}
}
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}

02.同行列对角线的格子

#include<bits/stdc++.h>
using namespace std;
int main()
{ int n,a,b,c[11][11];
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
cout<<"("<<a<<","<<i<<")"<<" ";
cout<<endl; 
for(int i=1;i<=n;i++)
cout<<"("<<i<<","<<b<<")"<<" ";
cout<<endl;
for(int i=1;i<=n;i++)
for(int k=1;k<=n;k++)
if(a-i==b-k) cout<<"("<<i<<","<<k<<")"<<" ";
cout<<endl;
for(int i=n;i>=1;i--)
for(int k=n;k>=1;k--)
if(i+k==a+b) cout<<"("<<i<<","<<k<<")"<<" ";
cout<<endl;
return 0;
}

03:计算矩阵边缘元素之和

#include<bits/stdc++.h>
using namespace std;
int s;
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)  
     for(int j=1;j<=m;j++) 
      {
           int x;
           cin>>x;
           if(i==1||i==n||j==1||j==m) s+=x;
      }
    cout<<s;
}

04:错误探测

#include<bits/stdc++.h>
using namespace std;
int h[101],l[101];
int n;
int x,y,dx,dy;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) 
      for(int j=1;j<=n;j++) 
        {
             int x;
             cin>>x;
             h[i]+=x;
             l[j]+=x;
        }
    for(int i=1;i<=n;i++)
     {
         if(h[i]&1) x++,dx=i;
        if(l[i]&1) y++,dy=i;
     }
    if(x==1&&y==1) cout<<dx<<' '<<dy;
    else if(x>0||y>0) cout<<"Corrupt";
    else cout<<"OK";
}

05:计算鞍点

#include<iostream>
using namespace std;
int a[6][6];
bool ok;
int main()
{
    for(int i=1;i<=5;i++)
     for(int j=1;j<=5;j++)
            cin>>a[i][j];
    for(int i=1;i<=5;i++)
     {
          int max_h=-0x7fffffff,k=0;
          for(int j=1;j<=5;j++)
            if(a[i][j]>max_h)
             {
                 max_h=a[i][j];k=j;
            }
         int min_l=0x7fffffff,q=0;
         for(int l=1;l<=5;l++)
          if(a[l][k]<min_l) 
          {
                min_l=a[l][k];q=l;
          }
        if(q==i) 
        {
            cout<<i<<' '<<k<<' '<<a[i][k];
            return 0;
        }
     }
    cout<<"not found";
}

06:图像相似度

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值