T3
2025-01-19 22:17:39
发布于:北京
25阅读
0回复
0点赞
T3:
题目名称:下棋
时间限制:.
空间限制:
题意分析
这道题让我们求棋盘上有多少颗棋子,规则是这样的:
1.一共,输入次,每次输入,表示棋子下在下棋
2.如果位置已经有棋子,则要将棋下在的位置上
3.若也有棋子,则不执行任何操作
关键思路
这道题我们可以用一个vis数组记录位置是否有棋子,如果为真,则尝试位置,如果也为真,则跳过。如果找到没有棋子的位置,就将这个点标记为true,最后循环遍历vis数组,查找值为true的元素个数
:
#include <bits/stdc++.h>
using namespace std;
int main(){
    int ans = 0;//记录答案
    int arr[300000] = {};//每个棋子
    bool vis[300000] = {};//标记是否有棋子
    int n,m;
    cin >> n >> m;//输入
    for (int i = 1;i <= n;i ++){
        cin >> arr[i];//输入棋子位置
        if(vis[arr[i]]){//如果位置上已经有棋子
            if(vis[arr[i]+1]){//检测下一个位置
                continue;//如果也有棋子,则跳过
            }else{
                vis[arr[i]+1] = true;//标记这个位置
            }
        }else{
        	vis[arr[i]] = true;//标记当前位置
        }
    }
    for (int i = 1;i <= m;i ++){
        if(vis[i]){
            ans ++;//如果有棋子,记录
        }
    }
    cout << ans ;//输出
    return 0;
}
这里空空如也




有帮助,赞一个