CCF认证考试历年1、2题AC代码

CCF认证考试历年1、2题AC代码

1.ISBN号码

#include
using namespace std;

int main()
{
	char ch;
	int a[3],sum=0,temp=0,b[9]={1,4,3,2,9,8,7,6,5};
	for(int i=0;i<3;i++)
	{
		cin>>a[i]>>ch;
		int c=a[i];
		do
		{
			sum+=(c%10)*b[temp++];
			c/=10;
		}while(c);
	}
	char p;
	cin>>p;
	char q;
	if(sum%11!=10)
	q=sum%11+48;
	else
	q='X';
	if(p==q)
	cout<<"Right";
	else
	{
		for(int i=0;i<3;i++)
		cout<<a[i]<<"-";
		cout<<q;
	}
	return 0;
}

2.Z字形扫描

#include
using namespace std;
int a[1000][1000];
int main()
{
	int n;
	cin>>n; 
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			int p;
			cin>>p;
			a[i][j]=p;
		}
	}
	if(n==1)
	cout<<a[0][0];
	else
	{
		int b=-1,c=1,p=0,q=0,i=0,j=0,sum=0;
	cout<<a[0][0]<<" ";
	while(sum<2*n-3)
	{
		if(b==1)
		i++;
		else
		j++;
		p=i;q=j;
		while(i!=q||j!=p)
		{
			cout<<a[i][j]<<" ";
			i+=c;
			j-=c;
		}
		cout<<a[i][j]<<" ";
		c*=-1;
		sum++;
		if(sum!=n-1)
		b*=-1;
	}
	cout<<a[n-1][n-1];
	}
	return 0;
}

3.出现次数最多的数

#include
#include
using namespace std;

int main()
{
	map<int,int> m;
	map<int,int>::iterator it;
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int p;
		cin>>p;
		m[p]++;
	}
	int min=0,max=0;
	for(it=m.begin();it!=m.end();it++)
	{
		if(it->second>max)
		{
			max=it->second;
			min=it->first;
		}
	}
	cout<<min;
	return 0;
}

4.窗口

#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int a[3000][2000];
struct node
{
	int x1,x2,y1,y2;
};

int main()
{
	mem(a,0);
	int n,m;
	cin>>n>>m;
	string result[m];
	struct node b[n];
	for(int k=1;k<=n;k++)
	{
		int x1,y1,x2,y2;
		cin>>x1>>y1>>x2>>y2;
		b[k-1].x1=x1;b[k-1].x2=x2;b[k-1].y1=y1;b[k-1].y2=y2;
		for(int i=x1;i<=x2;i++)
		for(int j=y1;j<=y2;j++)
		a[i][j]=k;
	}
	for(int k=0;k<m;k++)
	{
		int p,q;
		cin>>p>>q;
		if(a[p][q]!=0)
		{
			result[k]=to_string(a[p][q]);
			for(int i=b[a[p][q]-1].x1;i<=b[a[p][q]-1].x2;i++)
			for(int j=b[a[p][q]-1].y1;j<=b[a[p][q]-1].y2;j++)
			a[i][j]=a[p][q];
		}
		else
		result[k]="IGNORED";
	}
	for(int k=0;k<m;k++)
	cout<<result[k]<<endl;
	return 0;
}

5.打酱油

#include
using namespace std;

int main()
{
	int m,sum=0;
	cin>>m;
	int n=m/10;
	while(n>=5)
	{
		sum+=7;
		n-=5;
	}
	while(n>=3)
	{
		sum+=4;
		n-=3;
	}
	sum+=n;
	cout<<sum;
	return 0;
}

6.俄罗斯方块

#include
using namespace std;
struct node
{
	int x;
	int y;
};
int main()
{
	int a[15][10],b[4][4];
	for(int i=0;i<15;i++)
	{
		for(int j=0;j<10;j++)
		{
			int p;
			cin>>p;
			a[i][j]=p;
		}
	}
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)
		{
			int p;
			cin>>p;
			b[i][j]=p;
		}
	}
	struct node p[4];
	int s=0;
	for(int j=0;j<4;j++)
	{
		int c=0;
		for(int i=0;i<4;i++)
		{
			if(b[i][j]==1)
			{
				c=1;
				p[s].x=i;
				p[s].y=j;
			}
		}
		if(c) 
		s++;
	}
	int h,j,i=1,c=1;
	cin>>h;
	while(c)
	{
		for(j=0;j<s;j++)
		{
			if(a[p[j].x+i][p[j].y+h-1]==1||p[j].x+i==15)
			{
				c=0;
				for(int k=0;k<s;k++)
				for(int l=p[k].x+i-1;l>=i-1;l--)
				a[l][p[k].y+h-1]=b[l-i+1][p[k].y];
			}
		}
		i++;
	}
	for(int i=0;i<15;i++)
	{
		for(int j=0;j<10;j++)
		cout<<a[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

7.二十四点

#include
#include 
#include
using namespace std;

int main()
{
	int i,n,j=0;
	cin>>n;
	string result[n];
	while(j<n)
	{
		int b,sum=0;
		char a[10];
		cin>>a;
		stack<int> num;
		for(i=0;i<7;i++)
		{
			if(a[i]>'0'&&a[i]<='9')
			num.push(a[i]-'0');
			else if(a[i]=='-')
			{
				num.push('0'-a[i+1]);
				i++; 
			} 
			else if(a[i]=='x'||a[i]=='/')
			{
				b=num.top();
				num.pop();
				if(a[i]=='x')
				num.push(b*(a[i+1]-'0'));
				else
				num.push(b/(a[i+1]-'0'));
				i++;
			}
		}
		while(!num.empty())
		{
			sum+=num.top();
			num.pop();
		}
		if(sum==24)
		result[j]="Yes";
		else
		result[j]="No";
		j++;
	}
	for(i=0;i<n;i++)
	cout<<result[i]<<endl;
	return 0;
}

8.分蛋糕

#include
using namespace std;

int main()
{
	int n,k,sum=0,temp=0;
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		sum+=a;
		if(sum>k||sum==k)
		{
			temp++;
			sum=0;
		}
	}
	if(sum)
	temp++;
	cout<<temp;
	return 0;
}

9.工资计算

#include
using namespace std;
int jisuan(int x);
int main()
{
	int S,T;
	cin>>T;
	S=jisuan(T);
	cout<<S;
	return 0;
}
int jisuan(int x)
{
	int y;
	if(x<3500||x==3500)
	y=x;
	else if(x<4955||x==4955)
	y=(x-105)*100/97;
	else if(x<7655||x==7655)
	y=(x-455)*100/90;
	else if(x<11255||x==11255)
	y=(x-1255)*100/80;
	else if(x<30755||x==30755)
	y=(x-1880)*100/75;
	else if(x<44755||x==44755)
	y=(x-3805)*100/70;
	else if(x<61005||x==61005)
	y=(x-6730)*100/65;
	else
	y=(x-15080)*100/55;
	return y;
}

10.公共钥匙盒(模拟)

#include
#include
#include
using namespace std;
struct node
{
	int id;
	bool operate;
	int time; 
};
bool cmp(node x,node y);
int main()
{
	int n,k;
	cin>>n>>k;
	vector<int> key;
	vector<node> p;
	for(int i=1;i<=n;i++)
	key.push_back(i);
	for(int i=0;i<k;i++)
	{
		struct node a,b;
		int w,s,c;
		cin>>w>>s>>c;
		a.id=b.id=w;
		a.time=s;b.time=s+c;
		a.operate=0;b.operate=1;
		p.push_back(a);
		p.push_back(b);
	}
	sort(p.begin(),p.end(),cmp);
	vector<int>::iterator it;
	for(vector<node>::iterator i=p.begin();i<p.end();i++)
	{
		if((*i).operate)
		{
			it=find(key.begin(),key.end(),0);
			*it=(*i).id;
		}
		else
		{
			it=find(key.begin(),key.end(),(*i).id);
			*it=0;
		}
	}
	for(int i=0;i<n;i++)
	cout<<key[i]<<" "; 
	return 0;
}
bool cmp(node x,node y)
{
	if(x.time==y.time)
	{
		if(x.operate==y.operate)
		return x.id<y.id;
		else
		return x.operate>y.operate;
	}
	else
	return x.time<y.time;
}

公共钥匙盒(复杂)

#include
#include
#include
using namespace std;
struct sit
{
	int id;
	int b;
	int e;
	int flag=0;
};
bool cmp1(sit x,sit y);
bool cmp2(sit x,sit y);
bool cmp3(sit x,sit y);
int main()
{
	int n,k;
	cin>>n>>k;
	struct sit p[k];
	int key[n];
	for(int i=0;i<n;i++)
	key[i]=i+1;
	for(int i=0;i<k;i++)
	{
		int w,s,c;
		cin>>w>>s>>c;
		p[i].id=w;
		p[i].b=s;
		p[i].e=s+c;
	}
	sort(p,p+k,cmp1);
	vector<int> v;
	for(int i=0;i<k;i++)
	{
		int l;
		for(int j=0;j<=i-1;j++)
		{
			if(p[j].e<=p[i].b&&p[j].flag==0)
			{
				v.push_back(j);
				p[j].flag=1; 
			}
		}
		struct sit temp[v.size()];
		int c=0,len=v.size();
		for(l=0;l<len;l++)
		{
			c=1;
			temp[l]=p[v.back()];
			v.pop_back();
		}
		sort(temp,temp+len,cmp2);
		if(c==1)
		{
			int a=0;
		    for(int j=0;j<n;j++)
		    {
		    	if(key[j]==0)
		    	{
		    		key[j]=temp[a++].id;
		    		if(a==l)
		    		break;
				}
			}
		}
		for(int j=0;j<n;j++)
		if(key[j]==p[i].id)
		key[j]=0;
	}
	sort(p,p+k,cmp3);
	for(int i=0;i<k;i++)
	{
		if(p[i].flag==0)
		{
			for(int j=0;j<n;j++)
			if(key[j]==0)
			{
				key[j]=p[i].id;
				goto here;
			}
		}
		here:;
	}  
	for(int i=0;i<n;i++)
	cout<<key[i]<<" ";
	return 0;
}
bool cmp1(sit x,sit y)
{
	return x.b<y.b;
}
bool cmp2(sit x,sit y)
{
	if(x.e==y.e)
	return x.id<y.id;
	else
	return x.e<y.e;
}
bool cmp3(sit x,sit y)
{
	return x.e<y.e;
}

11.画图

#include
#include 
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int a[200][200]; 

int main()
{
	mem(a,0);
	int n,area=0;
	cin>>n;
	while(n--)
	{
		int x1,x2,y1,y2;
		cin>>x1>>y1>>x2>>y2;
		for(int j=x1;j<=x2-1;j++)
		for(int k=y1;k<=y2-1;k++)
		a[j][k]=1;
	}
	for(int i=0;i<100;i++)
	for(int j=0;j<100;j++)
	if(a[i][j]==1)
	area++;
	cout<<area;
	return 0;
}

12.火车购票

#include
#include
using namespace std;

int main()
{
	vector<vector<int>> vec(20);
	for(int i=0;i<20;i++)
	vec[i].resize(5);
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int j,p;
		cin>>p;
		for(j=0;j<20;j++)
		{
			if(vec[j].size()>=p)
			{
				for(int k=5*j+6-vec[j].size();k<5*j+6-vec[j].size()+p;k++)
				cout<<k<<" ";
				cout<<endl;
				vec[j].resize(vec[j].size()-p);
				break;
			}
		}
		if(j==20)
		{
			int k=0;
			while(p)
			{
				if(vec[k].size()<=p)
				{
					for(int l=5*k+6-vec[k].size();l<=5*k+5;l++)
					cout<<l<<" ";
					p-=vec[k].size();
					vec[k].resize(0);
				}
				else
				{
					for(int l=5*i+6-vec[k].size();l<5*i+6-vec[j].size()+p;l++)
					cout<<l<<" ";
					vec[k].resize(vec[k].size()-p);
					p=0;
				}
				k++;
			}
			cout<<endl;
		}
	}
	return 0;
}

13.买菜

#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int time[100000];
int main()
{
	mem(time,0);
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int ai,bi;
		cin>>ai>>bi;
		for(int j=ai;j<=bi-1;j++)
		time[j]=1;
	}
	int sum=0;
	for(int i=0;i<n;i++)
	{
		int ci,di;
		cin>>ci>>di;
		for(int j=ci;j<=di-1;j++)
		if(time[j])
		sum++;
	}
	cout<<sum;
	return 0;
}

14.卖菜

#include
#include
using namespace std;

int main()
{
	stack<int> up;
	int i,n,c,d,sum;
	cin>>n;
    int a[n],b[n-2];
	for(i=0;i<n;i++)
	{
		sum=0;
		cin>>a[i];
		up.push(a[i]);
		if(up.size()==3)
		{
			c=up.top();
			while(!up.empty())
			{
				sum+=up.top();
				if(up.size()==2)
				d=up.top();
				up.pop();
			}
			up.push(d);
			up.push(c);
			b[i-2]=sum/3;
		}
	}
	cout<<(a[0]+a[1])/2<<" ";
	for(i=0;i<n-2;i++)
	cout<<b[i]<<" ";
	cout<<(a[n-2]+a[n-1])/2;
	return 0;
}

15.门禁系统

#include
#include
#include
using namespace std;

int main()
{
	map<int,int> m;
	vector<int> v;
	vector<int>::iterator it;
	int n;
	cin>>n; 
	for(int i=0;i<n;i++)
	{
		int p;
		cin>>p;
		m[p]++;
		v.push_back(m[p]);
	}
	for(it=v.begin();it<v.end();it++)
	cout<<*it<<" ";
	return 0;
}

16.碰撞的小球

#include
#include
using namespace std;

int main()
{
	int n,l,t;
	cin>>n>>l>>t;
	vector<int> v;
	for(int i=0;i<n;i++)
	{
		int loc;
		cin>>loc;
		v.push_back(loc);
	}
	int num[n];
	for(int i=0;i<n;i++)
	num[i]=1;
	while(t--)
	{
		for(int i=0;i<n;i++)
		{
			v[i]+=num[i];
			if(v[i]==0||v[i]==l)
			num[i]*=-1;
		}
		for(int i=0;i<n-1;i++)
		{
			for(int j=i+1;j<n;j++)
			{
				if(v[i]==v[j])
				{
					num[i]*=-1;
					num[j]*=-1;
				}
			}
		}
	}
	for(int i=0;i<n;i++)
	cout<<v[i]<<" ";
	return 0;
}

17.日期计算

#include
using namespace std;

int main()
{
	int y,d,sum=0;
	cin>>y>>d;
	int flag=0;
	for(int i=1;i<=12;i++)
	{
		int day;
		switch(i)
		{
			case 4:
			case 6:
			case 9:
			case 11:day=30;break;
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:day=31;break;
			case 2:day=28+(y%4==0&&y%100!=0||y%400==0);break;
		}
		for(int j=1;j<=day;j++)
		{
			sum++;
			if(sum==d)
			{
				cout<<i<<endl<<j;
				flag=1;
			}
			if(flag) break;
		}
		if(flag) break;
	}
	return 0;
}

18.数列分段

#include
using namespace std;

int main()
{
	int n,sum=1;
	cin>>n;
	int q;
	cin>>q;
	for(int i=0;i<n-1;i++)
	{
		int num;
		cin>>num;
		if(num!=q)
		sum++;
		q=num;
	}
	cout<<sum;
	return 0;
}

19.数位之和

#include 
using namespace std;

int main()
{
	int sum=0;
	long long n;
	cin>>n;
	while(n>0)
	{
		sum+=n%10;
		n/=10;
	}
	cout<<sum;
	return 0;
}

20.数字排序

#include
#include
#include
using namespace std;
struct node
{
	int key;
	int value;
};
struct node a[2000];
bool cmp(node x,node y);
int main()
{
	map<int,int> m;
	map<int,int>::iterator it;
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int p;
		cin>>p;
		m[p]++;
	}
	it=m.begin();
	for(int i=0;i<m.size();i++)
	{
		a[i].key=it->first;
		a[i].value=it->second;
		it++;
	}
	sort(a,a+m.size(),cmp);
	for(int i=0;i<m.size();i++)
	cout<<a[i].key<<" "<<a[i].value<<endl;
	return 0;
}
bool cmp(node x,node y)
{
	if(x.value==y.value)
	return x.key<y.key;
	else
	return x.value>y.value;
}

21.跳一跳

#include
using namespace std;

int main()
{
	int a,sum=0,flag=0,temp=4;
	while(1)
	{
		int sit;
		cin>>sit;
		if(sit==0)
		break;
		else if(sit==1)
		{
			temp=4;
			flag=1;
			sum++;
		}
		else
		{
			if(flag||sum==0)
			sum+=2;
			else
			{
				sum+=temp;
				temp+=2;
			}
			flag=0;
		}
	}
	cout<<sum;
	return 0;
}

22.图像旋转

#include
using namespace std;
int b[1010][1010];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=m-1;j>=0;j--)
		{
			int p;
			cin>>p;
			b[j][i]=p;
		}
	}
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		cout<<b[i][j]<<" ";
		cout<<endl;
	}
	return 0;
}

23.相反数

#include
using namespace std;
int a[1000];
int main()
{
	int n,sum=0;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int q;
		cin>>q;
		a[i]=q;
	}
	for(int i=0;i<n-1;i++)
	for(int j=i+1;j<n;j++)
	if(a[i]==-1*a[j])
	sum++;
	cout<<sum;
	return 0;
}

24.相邻数对

#include
#include
using namespace std;
int a[2000];
int main()
{
	int n,sum=0;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int p;
		cin>>p;
		a[i]=p;
	}
	for(int i=0;i<n-1;i++)
	for(int j=i+1;j<n;j++)
	if(abs(a[i]-a[j])==1)
	sum++;
	cout<<sum;
	return 0;
}

25.消除类游戏

#include
using namespace std;
struct node
{
	int v;
	int flag=0;
};
int main()
{
	int n,m;
	cin>>n>>m;
	struct node a[n][m];
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			int p;
			cin>>p;
			a[i][j].v=p;
		}
	}
	for(int i=0;i<n;i++)
	{
		int sum=1;
		for(int j=1;j<m;j++)
		{
			if(a[i][j].v==a[i][j-1].v)
			sum++;
			if(a[i][j].v!=a[i][j-1].v||j==m-1)
			{
				if(sum>=3)
				for(int k=j-(a[i][j].v!=a[i][j-1].v);k>=j-(a[i][j].v!=a[i][j-1].v)-sum+1;k--)
				a[i][k].flag=1;
				sum=1;
			}
		}
	}
	for(int j=0;j<m;j++)
	{
		int sum=1;
		for(int i=1;i<n;i++)
		{
			if(a[i][j].v==a[i-1][j].v)
			sum++;
			if(a[i][j].v!=a[i-1][j].v||i==n-1)
			{
				if(sum>=3)
				for(int k=i-(a[i][j].v!=a[i-1][j].v);k>=i-(a[i][j].v!=a[i-1][j].v)-sum+1;k--)
				a[k][j].flag=1;
				sum=1;
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j].flag==1)
			cout<<0<<" ";
			else
			cout<<a[i][j].v<<" ";
		}
		cout<<endl;
	}
	return 0;
}

26.小明放学

#include
using namespace std;

struct light
{
	int g;
	int time;
};
int main()
{
	int red,yellow,green;
	cin>>red>>yellow>>green;
	struct light info[3];
	info[0].g=1;info[0].time=red;
	info[1].g=3;info[1].time=green;
	info[2].g=2;info[2].time=yellow;
	int n;
	cin>>n;
	long long sum=0;
	while(n--)
	{
		long long t;
	    int k,b; 
		cin>>k>>t;
		if(k==0)
		sum+=t;
		else
		{
			b=(k>=2?-1:2)*k+(k>=2?4:-2);
			if(sum<t)
			t-=sum;
			else if(sum==t)
			{
				b++;
				if(b==3)
				b=0;
				t=info[b].time;
			}
			else
			{
				long long div=(sum-t)/(red+yellow+green);
		        t+=div*(red+yellow+green);
				t=sum-t;
				b++;
				if(b==3)
				b=0;
				while(t>=info[b].time)
				{
					t-=info[b].time;
					b++;
					if(b==3)
					b=0;
				}
				t=info[b].time-t;
			}
			if(info[b].g==1)
			sum+=t;
			else if(info[b].g==2)
			sum+=t+red;
		}
	}
	cout<<sum;
	return 0;
}

27.小明上学

#include
using namespace std;

int main()
{
	int red,yellow,green;
	cin>>red>>yellow>>green;
	int i,n,sum=0;
	cin>>n;
	for(i=0;i<n;i++)
	{
		int k,t;
		cin>>k>>t;
		if(k==0||k==1)
		sum+=t;
		else if(k==2)
		sum+=t+red;	
	}
	cout<<sum;
	return 0;
}

28.小中大

#include
#include
#include
using namespace std;
int main()
{
	int i,n;
	cin>>n;
	int num[n];
	float middle;
	for(i=0;i<n;i++)
	cin>>num[i];
	sort(num,num+n);
	cout<<num[n-1]<<" ";
	if(n%2!=0)
	cout<<num[n/2]<<" ";
	else
	{
		if((num[n/2]+num[n/2-1])%2==0)
		cout<<(num[n/2]+num[n/2-1])/2<<" ";
		else
		cout<<fixed<<setprecision(1)<<float((num[n/2]+num[n/2-1])/2.0)<<" ";
	}
	cout<<num[0];
	return 0;
}

29.学生排队

#include
#include
#include
using namespace std;

int main()
{
	vector<int> army;
	vector<int>::iterator it;
	int n,op;
	cin>>n>>op;
	for(int i=1;i<=n;i++)
	army.push_back(i);
	for(int i=0;i<op;i++)
	{
		int a,b,x;
		cin>>a>>b;
		it=find(army.begin(),army.end(),a);
		army.erase(it,it+1);
		army.insert(it+b,a);
	}
	for(it=army.begin();it<army.end();it++)
	cout<<*it<<" ";
	return 0;
}

30.游戏

#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;

int main()
{
	int n,k,judje,sum=0;
	cin>>n>>k;
	int flag[n+1];
	mem(flag,0);
	for(int i=1;;i++)
	{
		judje=0;
		for(int j=1;j<=n;j++)
		judje+=flag[j];
		if(judje==n-1)
		break;
		if(flag[i]==1)
		goto here;
		sum++;
		if(sum%k==0||sum%10==k)
		flag[i]=1;
		here:
		if(i==n)
		i=0;
	}
	for(int i=1;i<=n;i++)
	if(flag[i]==0)
	cout<<i<<endl;
	return 0;
}

31.折点计数

#include
using namespace std;

int main()
{
	int n,sum=0;
	cin>>n;
	int flag[2];
	if(n<=2)
	cout<<0;
	else
	{
		int a,b;
		cin>>a>>b;
		if(a>b)
		flag[0]=1;
		else
		flag[0]=-1;
		int q=b;
		for(int i=0;i<n-2;i++)
		{
			int p;
			cin>>p;
			if(q>p)
			flag[1]=1;
			else
			flag[1]=-1;
			if(flag[0]*flag[1]==-1)
			sum++;
			flag[0]=flag[1];
			q=p;
		}
		cout<<sum;
	}
	return 0;
}

32.中间数

#include
#include
using namespace std;

int main()
{
	vector<int> v,r;
	vector<int>::iterator it1,it2;
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int num;
		cin>>num;
		v.push_back(num);
	}
	int a,b; 
	for(it1=v.begin();it1<v.end();it1++)
	{
		a=b=0;
		for(it2=v.begin();it2<v.end();it2++)
		{
			if(*it2>*it1)
			b++;
			else if(*it2<*it1)
			a++;
		}
		if(a==b)
		r.push_back(*it1);
	}
	if(!r.empty())
	cout<<r.back();
	else
	cout<<-1;
	return 0;
}

33.最大波动

#include
#include
using namespace std;

int main()
{
	int n,max;
	cin>>n;
	int a[n];
	cin>>a[0]>>a[1];
	max=abs(a[1]-a[0]);
	for(int i=2;i<n;i++)
	{
		cin>>a[i];
		if(abs(a[i]-a[i-1])>max)
		max=abs(a[i]-a[i-1]);
	}
	cout<<max;
	return 0;
}

34.最小差值

#include
#include
using namespace std;

int main()
{
	int n;
	cin>>n;
	int num[n];
	for(int i=0;i<n;i++)
	{
		int a;
		cin>>a;
		num[i]=a;
	}
	int min=abs(num[0]-num[1]);
	for(int i=0;i<n-1;i++)
	for(int j=i+1;j<n;j++)
	min=min>abs(num[i]-num[j])?abs(num[i]-num[j]):min;
	cout<<min;
	return 0;
}

你可能感兴趣的:(刷题记录)