题意:给你 n双袜子,袜子全在柜子里,每次只能拿一只袜子放在桌子上,如果有一对袜子出现,则这对袜子消失
现在给你取出袜子的序号,求桌子上最多的时候有多少只袜子
思路:定义一个数组,映射袜子序列的数量,在定义一个变量 z,永远指向桌子上的袜子数量
在定义一个变量 num,指向出 z变化中的最大值,输入结束 num 既是答案
#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int Ac[maxn];
int main(){
int n,val;
scanf("%d",&n);
int c=0,z=0,num=0;
memset(Ac,0,sizeof(Ac));
for(int i=0;i<2*n;++i){
scanf("%d",&val);
Ac[val]++;
if(Ac[val]==2){
z--;
Ac[val]=0;
}
if(Ac[val]==1){
z++;
if(num<z){
num=z;
}
}
}
printf("%d\n",num);
return 0;
}
本文探讨了一道经典的编程题目——袜子配对问题。通过使用数组来跟踪每种袜子的数量,当一对袜子被找到时,它们会从桌子上移除。文章详细介绍了如何找出在任何时候桌子上的袜子的最大数量。
426

被折叠的 条评论
为什么被折叠?



