头像

CCabout




离线:25天前


最近来访(4)
用户头像
Ditto_O
用户头像
TheSun
用户头像
Sino
用户头像
Tranquility

活动打卡代码 AcWing 3228. 俄罗斯方块

CCabout
1个月前
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 17;
int g[N][N], st[N][N];
int p[4][4];//掉落方块

bool draw(int x, int y)//判断是true 否false 重叠
{
    memcpy(st, g, sizeof st); // 这里是对原数组的备份  因为需要多次draw  每次需要元数组的信息 所以需要拷贝
    for (int i = 0; i < 4; i ++)
        for (int j = 0; j < 4; j ++)
        {
            if (p[i][j])  // 当前点是格子
            {
                int a = x + i, b = y + j;
                st[a][b] ++;
                if (st[a][b] == 2) return true; // 为2表示重叠
            }
        }
    return false;    
}

int main()
{
    for (int i = 0; i < 15; i ++)
        for (int j = 0; j < 10; j ++)
            cin >> g[i][j];

    for (int i = 0; i < 4; i ++)
        for (int j = 0; j < 4; j ++)
            cin >> p[i][j];

     //为了判断下边界  我们需要将下边届初始化为1 表示有格子(铺一层地板)
    for (int j = 0; j < 10; j ++) g[15][j] = 1;

    int c;//输入下落列数
    cin >> c;
    c --; // 从0开始做的

    for (int i = 0; ; i ++)
    {
        if (draw(i, c))//如果重叠了就返回上一步
        {
            draw(i-1, c);
            break;
        }
    }

    for (int i = 0; i < 15; i ++)
    {
        for (int j = 0; j < 10; j ++)
            cout << st[i][j] << " ";
        cout << endl;    
    }
    return 0;
}




活动打卡代码 AcWing 3227. 折点计数

CCabout
1个月前
#include<iostream>
using namespace std;

const int N=1010;

int a[N];
int n,num;

int main(){
    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];

    for(int j=1;j<n-1;j++){
        if( (a[j-1]<a[j] && a[j+1]<a[j]) || (a[j-1]>a[j] && a[j+1]>a[j]) )num++;
    }

    cout<<num<<endl;

    return 0;
}


活动打卡代码 AcWing 3223. 消除类游戏

CCabout
1个月前
#include<iostream>
using namespace std;
const int N=50;

int a[N][N],t[N][N];
int n,m;

int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            cin>>a[i][j];

    //行标记
    for(int i=0;i<n;i++){
        for(int j=0;j<m-2;j++){
            if(a[i][j]==a[i][j+1] && a[i][j]==a[i][j+2]){
                t[i][j]=1;t[i][j+1]=1;t[i][j+2]=1;
            }
        }
    }

    //列标记
    for(int j=0;j<m;j++){
        for(int i=0;i<n-2;i++){
            if(a[i][j]==a[i+1][j] && a[i][j]==a[i+2][j]){
                t[i][j]=1;t[i+1][j]=1;t[i+2][j]=1;
            }
        }
    }

    //更新
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(t[i][j]==1)a[i][j]=0;
        }
    }

    //输出
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }

    return 0;

}


活动打卡代码 AcWing 3222. 数位之和

CCabout
1个月前
#include<iostream>
using namespace std;

int n,sum;

int main(){
    cin>>n;
    while(n){
        sum+=n%10;
        n/=10;
    }
    cout<<sum<<endl;
    return 0;
}


活动打卡代码 AcWing 3218. 日期计算

CCabout
1个月前
#include <iostream>
using namespace std;

int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

// 闰年计算函数
int leapyear(int year) {
    return ((year%4 == 0 && year%100 != 0) || year%400 == 0) ? 1 : 0;
}

int main()
{
    int y, d, month=0, day, i;

    // 输入数据
    cin >> y >> d;

    // 计算月与日
    days[1] += leapyear(y);
    i = 0;
    while(d > 0) {
        if(d <= days[i]) {
            month = i + 1;
            day = d;
            break;
        } else {
            d -= days[i];
            i++;
        }
    }

    // 输出结果
    cout << month << endl << day << endl;

    return 0;
}



活动打卡代码 AcWing 3217. 数列分段

CCabout
1个月前
#include<iostream>
using namespace std;
const int N=1100;
int a[N];

int main(){
    int n,sum=0;
    cin>>n;
    for(int i = 0; i < n; i ++){
        cin>>a[i];
        if(a[i] != a[i-1])sum++;
    }
    cout<<sum;
}


活动打卡代码 AcWing 3257. 跳一跳

CCabout
9个月前
#include<iostream>

using namespace std;

int main(){
    int res = 0, score = 0;
    int x;
    while(cin>>x, x){
        if(x == 1){
            res++;
            score = 0;
        }
        else{
            score += 2;
            res += score;
        }
    }

    cout<<res<<endl;
    return 0;
}


活动打卡代码 AcWing 3253. 游戏

CCabout
9个月前
//报的数为k的倍数或个位为k,则淘汰
//约瑟夫生存游戏
#include<iostream>
#include<algorithm>

using namespace std;
const int N = 1010;

int n,k;
int a[N];

int main(){
    cin>>n>>k;//n个人报到k淘汰
    for(int i = 1; i <= n; i ++)a[i] = i;

    int cnt = 0,res = n;
    for(int i = 1; i <= n; i ++){

        if(a[i] != 0){//未出局
            cnt++;
            if(res == 1){
                cout<<i<<endl;
                break;
            }
            if(cnt % k == 0 || cnt % 10 == k){
                a[i] = 0;//i出局
                res--;
            }
        }

        if(i == n) i = 0;
    }

    return 0;
}


活动打卡代码 AcWing 3252. 最小差值

CCabout
9个月前
#include<iostream>
#include<algorithm>

using namespace std;
const int N = 1010;

int n;
int a[N];

int main(){
    cin>>n;
    for(int i = 0; i < n; i++)cin>>a[i];

    int res = 0x3f;
    for(int i = 0; i < n-1; i++){
        for(int j = i+1; j < n; j++){
            res = min(abs(a[i]-a[j]),res);
        }
    }
    cout<<res<<endl;

    return 0;
}


活动打卡代码 AcWing 3243. 学生排队

CCabout
9个月前
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;
const int N = 1010;

int q[N];
int n,m;

int main(){
    cin>>n>>m;

    //别忘了初始化
    for(int i = 1; i <= n; i ++)q[i] = i;

    while(m--){
        int a,b;
        cin>>a>>b;
        int k;
        for(int i = 1; i <= n; i ++)
            if(q[i] == a)
                k = i;

        if(b > 0){
            for(int i = 0; i < b; i++)
                swap(q[k+i],q[k+i+1]);
        }
        else{
            b = -b;//!!!
            for(int i = 0; i < b; i++)
                swap(q[k-i],q[k-i-1]);
        }
    }

    for(int i = 1; i <= n; i++)
        cout<<q[i]<<" ";

    return 0;
}