1.变量 maxn
和 g
在 for 循环内声明和初始化,是因为它们用于追踪每次循环中的最大值及其对应的索引。
如果将 maxn
和 g
的声明移到 for 循环外部,它们将保留上一次迭代的值,并且比较语句 if(a[j]>maxn)
或 if(b[j]>maxn)
将无法正常工作。在每次迭代中将它们初始化为 -1
的目的是为了找到当前迭代中的最大值。
通过在 for 循环内声明和初始化 maxn
和 g
,保证了它们在每次迭代时都有新的值,从而正确确定最大值及其索引。
#include<bits/stdc++.h> using namespace std; int m,n,k,l,d; int x,y,p,q; int a[1005],b[1005]; int c[1005],o[1005]; int main() { cin>>m>>n>>k>>l>>d; for(int i=1;i<=d;i++) { cin>>x>>y>>p>>q; if(x==p)b[min(y,q)]++; else if(y==q)a[min(x,p)]++; } for(int i=1;i<=k;i++) { int maxn=-1; int g; for(int j=1;j<=m;j++) if(a[j]>maxn) { maxn=a[j]; g=j; } a[g]=0; c[g]++; } for(int i=1;i<=l;i++) { int maxn=-1; int g; for(int j=1;j<=n;j++) if(b[j]>maxn) { maxn=b[j]; g=j; } b[g]=0; o[g]++; } for(int i=0;i<1005;i++) { if(c[i]) printf("%d ",i); } printf("\n"); for(int i=1;i<=1005;i++) { if(o[i]) printf("%d ",i); } return 0; }
标签:迭代,int,最大值,NOIP2008,++,座椅,maxn,P1056,1005 From: https://www.cnblogs.com/sdutblh/p/17579127.html