第15关 - 课程ZD 队列的预备知识

文章包含C++编程练习实例,涉及孤立棋子和安全马问题的解决方案,以及数组操作如二维数组应用、排序算法和前缀和计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1043.(课程ZD)孤立的棋子

登录

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


1044.(课程ZD)孤立的棋子2

登录

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


1045.(课程ZD)安全的马

登录

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[50+10] [50+10]={0},ans=0;
    cin>>n;
    
    for(int i=2;i<=n+1;i++)
    {
        for(int j=2;j<=n+1;j++)
        {
            cin>>a[i] [j];
        }
    }
    
    for(int i=2;i<=n+1;i++)
    {
        for(int j=2;j<=n+1;j++)
        {
            if( a[i] [j]==1 )
            {
                if( a[i+2] [j+1]==0 && a[i-2] [j+1]==0 )
                {
                    if( a[i+2] [j-1]==0 && a[i-2] [j-1]==0 )
                    {
                    	if( a[i+1] [j+2]==0 && a[i+1] [j-2]==0 )
                		{
                    		if( a[i-1] [j+2]==0 && a[i-1] [j-2]==0 )
                    		{
                    			ans++;
							}
						}
                	}
				}	
            }
        }
    }
    
    cout<<ans<<endl;
    
    return 0;
}


1046.(课程ZD)坐标排序

登录

#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x,y;
}a[11456];

int cmp(node L,node R)
{
	if(L.y!=R.y) return L.y>R.y;
	return L.x<R.x;
}

int main()
{
    int n;

    cin>>n;

    for(int i=1;i<=n;i++)
    {
    	cin>>a[i].x>>a[i].y;
	}

	sort(a+1,a+n+1,cmp);

	for(int i=1;i<=n;i++)
    {
		cout<<a[i].x<<' '<<a[i].y<<endl;
	}

    return 0;
}

1047.(课程ZD)危险的马

登录

#include<bits/stdc++.h>
using namespace std;
int a[1010][1010],t=0,t1=0;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i][j]==1){
                if(a[i-1][j+2]==1)t++;
                if(a[i-1][j-2]==1)t++;
                if(a[i+1][j+2]==1)t++;
                if(a[i+1][j-2]==1)t++;
                if(a[i-2][j+1]==1)t++;
                if(a[i-2][j-1]==1)t++;
                if(a[i+2][j+1]==1)t++;
                if(a[i+2][j-1]==1)t++;
                if(t>4)t1++;
                t=0;
            }    
        }
    }
    cout<<t1;
        
    return 0;
}

1048.(课程ZD)皇后的力量

登录

#include<bits/stdc++.h>
using namespace std;
int n,m,a[1050][1050],xx[1050],yy[1050],ans;
int main(){
	cin>>n>>m;
	int x,y;
	for(int i=1;i<=m;i++){
		cin>>xx[i]>>yy[i];
		a[xx[i]][yy[i]]=1;
	}
	for(int i=1;i<=m;i++){
		x=xx[i];y=yy[i];
		ans=1;
		for(int j=1;j<=n;j++)
			if(a[j][y]==1&&j!=x) ans++;
		for(int j=1;j<=n;j++)
			if(a[x][j]==1&&j!=y) ans++;
		for(int j=1;j<=n;j++)
			if(j-(x-y)>0&&j-(x-y)<=n&&a[j][j-(x-y)]==1&&j!=x) ans++;
		for(int j=1;j<=n;j++)
			if(x+y-j>0&&x+y-j<=n&&a[j][x+y-j]==1&&j!=x) ans++;
		cout<<ans<<endl;
	}
    return 0;
}

1049.(课程ZD)名次

登录

#include<bits/stdc++.h>
using namespace std;
struct data
{
    int x,y,z;
}a[100005];
bool c(data x,data y){
    return x.x>y.x;
}
bool c1(data x,data y){
    return x.z<y.z;
}
int main(){
    int n,k=1;
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>a[i].x;
        a[i].z=i;
    }
    sort(a+1,a+n+1,c);
    a[1].y=k;
    for(int i=2;i<=n;i++){
        k++;
        if(a[i].x==a[i-1].x) a[i].y=a[i-1].y;
        else a[i].y=k;
    }
    sort(a+1,a+n+1,c1);
    for(int i=1;i<=n;i++)
        cout<<a[i].y<<" ";
    return 0;
}








 小学生C++编程基础(一)--- 123题

小学生C++编程基础(一)--- 123题_小学c++编程题目-CSDN博客

第9关 - 课程E 数组前缀和(C++进阶课程)

第9关 - 课程E 数组前缀和(C++进阶课程)-CSDN博客

第10关 - 课程F 二重循环应用1

第10关 - 课程F 二重循环应用1-CSDN博客

第11关 - 课程G 冒泡、选择、插入排序、分解质因子

第11关 - 课程G 冒泡、选择、插入排序、分解质因子-CSDN博客

第12关 - 课程ZA 二维数组应用1

第12关 - 课程ZA 二维数组应用1-CSDN博客

《信息学奥赛一本通 编程启蒙 C++版》视频、题解(01-65)

《信息学奥赛一本通 编程启蒙 C++版》视频、题解(01-65)-CSDN博客

《信息学奥赛一本通 编程启蒙 C++版》 3001-3226

《信息学奥赛一本通 编程启蒙 C++版》 3001-3226-CSDN博客

《信息学奥赛一本通 编程启蒙C++版》第1课 -- 第86课

《信息学奥赛一本通 编程启蒙C++版》第1课 -- 第86课-CSDN博客

编程与数学、跟我学信奥、GOC编程

编程与数学、跟我学信奥、GOC编程-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值