求助站外题
  • 板块学术版
  • 楼主Kyl_in_2024
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/4/2 12:15
  • 上次更新2023/10/23 19:40:05
查看原帖
求助站外题
965180
Kyl_in_2024楼主2023/4/2 12:15

小蒟蒻第一次求助,如有什么不对的请指正谢谢

0 Runtime Error

bdfs无果(这种怎么可能有啊

题面:n 个孩子围成一圈在玩击鼓传花的游戏,老师负责击鼓,当鼓点结束,拿着花的孩子就要被淘汰出圈(此时鼓点也自动停止),然后下一个孩子接过花继续开始,此时鼓点会继续响起,依次淘汰,直到最后只留下一个孩子,就是胜利者。

有些孩子身手敏捷,很快就能把花传到下一个人手里,也有些孩子会在手里保留一阵子再传给下一个人,每个孩子保留花的时间是 t[i] 秒,假设花传递的过程不需要时间。

现在从 1 号孩子开始传递,输出最后的胜利者,以及淘汰的顺序

注意:鼓点持续时间 m,表示第m+1秒停止,而花停留在手里的时间为t[i],t[i+1]秒时花已经到了下一个人手里。 例如:m=12,t[1]=12,则第2人被淘汰。

代码:

#include<bits/stdc++.h>
using namespace std;
int t[1003],ttz[1000];
int main(){
	int n,m,m1,s,wz=0,zz=1,xcwz=0;//s=剩余人数,wz=人数位置,zz=淘汰人数的指针,m1=已经过了多少秒 xcwz=幸存人的位置
	cin>>n>>m;
    m1=0;
	s=n;
	for(int i=1;i<=n;i++) cin>>t[i];//输入
	while(s>1){//循环
        while(1){
		    if(wz==n) wz=0;
	    	wz++;
            if(t[wz]==0) continue;
            m1+=t[wz];
            xcwz=t[wz];
		    if(m1>=m+1){
                t[wz]=0;
                m1=0;
                ttz[zz]=wz;
                zz++;
                break;
            }
        }
        s--;
	}
    cout<<xcwz<<endl;
	for(int i=1;i<n;i++){
		cout<<ttz[i]<<" ";
	}
	return 0;
}

样例不知道为什么,胜利者的编号错了,而淘汰的人顺序却对了

输入数据:

5 12

3 7 9 1 4

输出数据

4

3 2 5 1

我的代码:

1

3 2 5 1

就梨谱

2023/4/2 12:15
加载中...