这题错哪了
2023-05-22 19:49:21
发布于:江苏
30阅读
0回复
0点赞
#include<algorithm>
#include<iostream>
using namespace std;
struct node{
int begin;
int end;
}act[10005];
bool cmp(node a,node b){
if(a.end!=b.end) return a.end<b.end;
else return a.begin>b.begin;
}
int tj(int n){
sort(act,act+n,cmp);
int sum=1,last=0;
for(int i=1;i<n;i++){
if(act[last].end<=act[i].begin){
last=i;
sum++;
}
}
return sum;
}
int main(){
int m;
cin>>m;
int a[m];
for(int i=0;i<m;i++){
int n;
cin>>n;
for(int j=0;j<n;j++) cin>>act[j].begin>>act[j].end;
for(int j=n+1;j<10000;j++){
act[j].begin=0;
act[j].end=0;
}
a[i]=tj(n);
}
for(int i=0;i<m;i++) cout<<a[i]<<endl;
return 0;
}
全部评论 2
#include <bits/stdc++.h>
using namespace std;
struct prog
{
int s;
int e;
}a[1000005];
bool cmp(prog aa,prog bb)
{
return aa.e<bb.e;
}
int n;
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].s>>a[i].e;
sort(a+1,a+n+1,cmp);
int cnt=1;
int ans=a[1].e;
for(int i=2;i<=n;i++)
{
if(ans<a[i].s)
{
cnt++;
ans=a[i].e;
}
}
cout<<cnt<<endl;
}
}1周前 来自 浙江
0hyw
1周前 来自 浙江
0
GPT:
根据您提供的代码,发现有以下问题:
在第二个循环中,没有必要为剩余的活动手动赋初值为 0。因为在输入时只会输入 n 个活动,后面没有输入的活动不需要处理,也不会对程序产生影响。
程序逻辑有误。在第二个循环中,应该使用 j<n 的条件进行循环,而不是 j<n+1。此外,在 tj 函数中,需将计数器 sum 初始化为 0,表示当前选择的活动数为 0。修改后的代码如下:2023-05-26 来自 浙江
0










有帮助,赞一个