奇怪的代码
查看原帖
奇怪的代码
1188389
wangyiyao__楼主2024/12/1 21:10

为何第二层for循环正着0分,反着AC?

可怜的鸭蛋:

#include<bits/stdc++.h>
using namespace std;
int n,sum;
struct E{
	int t,r;
}tr[505];
bool vis[505];
bool cmp(E x,E y){
	return x.r>y.r;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>tr[i].t;
	for(int i=1;i<=n;i++) cin>>tr[i].r;
	sort(tr+1,tr+n+1,cmp);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=tr[i].t;j++){
			if(!vis[j]){
				vis[j]=1;
				sum+=tr[i].r;
				break;
			}
		}
	}
	cout<<sum;
	return 0;
}

骄傲的AC:

#include<bits/stdc++.h>
using namespace std;
int n,sum;
struct E{
	int t,r;
}tr[505];
bool vis[505];
bool cmp(E x,E y){
	return x.r>y.r;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>tr[i].t;
	for(int i=1;i<=n;i++) cin>>tr[i].r;
	sort(tr+1,tr+n+1,cmp);
	for(int i=1;i<=n;i++){
		for(int j=tr[i].t;j>=1;j--){
			if(!vis[j]){
				vis[j]=1;
				sum+=tr[i].r;
				break;
			}
		}
	}
	cout<<sum;
	return 0;
}

求大佬,AC必关!

2024/12/1 21:10
加载中...