萌新求助约瑟夫超时,普通数组做的
查看原帖
萌新求助约瑟夫超时,普通数组做的
554595
GxCodes楼主2021/10/5 09:44

本地编译运行没问题,可是测试点全部超时!

#include <bits/stdc++.h>
using namespace std;

struct A
{
    int arr[105];
    int front, rear;
};
int n, m;
int IsEmty(A* s)
{
    for (int i = 1; i <= n; i++)
    {
        if (s->arr[i] != 0)
            return 0;
    }
    return 1;
}

void C(A* s)
{
    int ii = 1,kk = 1;
    while (!IsEmty(s))
   	{
        if (kk!=m)
        {
            ii++;
            
            while (s->arr[ii%(n)] == 0&&!IsEmty(s))
                ii++;
            kk++;
        }
        else if (kk == m)
        {
            if (ii % n == 0)
                cout << n << endl;
            else
                cout << ii % (n)<<" ";
            s->arr[ii % (n)] = 0;
            kk = 0; 
        }     
    }
}
int main()
{
    A* s;
    s = (A*)malloc(sizeof(A));
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        s->arr[i] = i;
    C(s);
}

2021/10/5 09:44
加载中...