为了能到远方,脚下的每一步都不能少。|

larryyu_blog

园龄:2年5个月粉丝:5关注:17

2023-01-13 11:15阅读: 23评论: 1推荐: 1

CF244A Dividing Orange 题解

Description

n×k 个橘子,k 个小朋友每人拿 n 个,但是每个人都指定了一个橘子 ai,分配时必须要把 ai 给第 i 个小朋友,求任一分配方案。

Solution

在输入 ai 时就把其分配到 ans[i][1],随后将剩余 n×(k1) 依次放入 ans 数组中即可。

Code

#include <bits/stdc++.h>
using namespace std;
int n,k,fl;
int cnt;
bool vis[2500];
int ans[50][50];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>k;
    for(int i=1;i<=k;i++){
        cin>>ans[i][1];
        vis[ans[i][1]]=1;
    }
    fl=1;//fl枚举当前在分配橘子的小朋友
    cnt=1;//cnt枚举当前小朋友已经拿了的数量
    for(int i=1;i<=n*k;i++){
        if(vis[i]) continue;//判断是否拿过
        if(cnt==n){//这个判断语句要放在第25行前
            fl++;  //否则n=1时每人就有2个了
            cnt=1;
        }
        ans[fl][++cnt]=i;
        vis[i]=1;
    }
    for(int i=1;i<=k;i++){
        for(int j=1;j<=n;j++){
            cout<<ans[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

完结撒花!!

本文作者:larryyu_blog

本文链接:https://www.cnblogs.com/larryyu/p/17049062.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   larryyu_blog  阅读(23)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起