noi寒假刷题之旅_1.9编程基础之顺序查找(15题)

»1.9编程基础之顺序查找(15题)

01:查找特定的值

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int *p=new int[n]();
	for(int i=0;i<n;++i)
	{
		cin>>p[i];
	} 
	int x,i;
	int flag=0;
	cin>>x;
	for(i=0;i<n;++i)
	{
		if(p[i]==x)
		{
			flag=1;
			break;
		}
	}
	if(flag)
	{
		cout<<i+1;
	}
	else
	{
		cout<<-1;
	}
	return 0; 
} 

02:输出最高分数的学生姓名

#include<iostream>
using namespace std;
struct
{
	string name;
	int score;
}p[2];
int main()
{
	int n;
	cin>>n;
	cin>>p[0].score>>p[0].name;
	for(int i=1;i<n;++i)
	{
		cin>>p[1].score>>p[1].name;
		if(p[1].score>p[0].score)
		{
			p[0].score=p[1].score;
			p[0].name=p[1].name;
		}
	} 
	cout<<p[0].name;
	return 0; 
} 

03:不高兴的津津

#include<iostream>
using namespace std;
struct
{
	int n;
	int s;
	int sum;
	int id;
}p[7];
int main()
{
	int n;
	cin>>p[0].n>>p[0].s;
	p[0].sum=p[0].n+p[0].s;
	p[0].id=0;
	int sum,s;
	for(int i=1;i<7;++i)
	{
		cin>>n>>s;
		int sum=n+s;
		if(p[0].sum<sum)
		{
			p[0].sum=sum;
			p[0].s=s;
			p[0].n=n;
			p[0].id=i;
		}
	} 
	if(p[0].sum<8)
	{
		cout<<0;
	}
	else
	{
		cout<<p[0].id+1;
	}
	return 0; 
} 

 04:谁拿了最多奖学金

#include<iostream>
using namespace std;
struct
{
	string name;
	int ave;
	int cla;
	string yn;
	string westen;
	int essay;
	int money;
}p[2];
int main()
{
	int n;cin>>n;
	int i=0;
	int sum=0;
	cin>>p[i].name>>p[i].ave>>p[i].cla>>p[i].yn>>p[i].westen>>p[i].essay;
	
	if(p[i].ave>80&&p[i].essay>=1)		p[i].money+=8000;
	if(p[i].ave>85&&p[i].cla>80)		p[i].money+=4000;
	if(p[i].ave>90)						p[i].money+=2000;
	if(p[i].ave>85&&p[i].westen=="Y")	p[i].money+=1000;
	if(p[i].cla>80&&p[i].yn=="Y")		p[i].money+=850;
	sum=p[0].money;
	for(i=1;i<n;++i)
	{
		cin>>p[1].name>>p[1].ave>>p[1].cla>>p[1].yn>>p[1].westen>>p[1].essay;
		p[1].money=0;
		if(p[1].ave>80&&p[1].essay>0)		p[1].money+=8000;
		if(p[1].ave>85&&p[1].cla>80)		p[1].money+=4000;
		if(p[1].ave>90)					    p[1].money+=2000;
		if(p[1].ave>85&&p[1].westen=="Y")   p[1].money+=1000;
		if(p[1].cla>80&&p[1].yn=="Y")		p[1].money+=850;
		sum+=p[1].money;
		if(p[0].money<p[1].money)
		{
			p[0].money=p[1].money;
			p[0].name=p[1].name;	
		}	
	}
	cout<<p[0].name<<endl<<p[0].money<<endl<<sum;	
	return 0; 
} 

05:最大值和最小值的差

#include<iostream>
using namespace std;
int main()
{
	int m;cin>>m;
	int c,max,min;
	cin>>max;
	min=max;
	for(int i=1;i<m;++i)
	{
		cin>>c;
		if(c>max)max=c;
		if(c<min)min=c;
	} 
	cout<<max-min;
	return 0; 
} 

06:笨小猴[map]

#include<iostream>
#include<map>
using namespace std;
int main()
{
	map<char,int> m;
	string s;
	cin>>s;
	for(int i=0;i<s.length();++i) m[s[i]]++;
	int max,min;
	map<char,int>::iterator i=m.begin();
	max=min=i->second;
	++i;
	for(;i!=m.end();++i)
	{
		if(min>i->second) min=i->second;
		if(max<i->second) max=i->second;
	}
	int c=max-min;
	if(c==2||(c)%2==1&&c!=1)  cout<<"Lucky Word"<<endl<<c;
	else				cout<<"No Answer"<<endl<<0;
	return 0; 
} 

07:不与最大数相同的数字之和

#include<iostream>
using namespace std;
struct
{
	int a;
	int count;
}p[2];
int main()
{
	int n;cin>>n;
	cin>>p[0].a;
	p[0].count=1;
	int sum=p[0].a;
	for(int i=1;i<n;++i)
	{
		cin>>p[1].a;
		if(p[1].a>=p[0].a)
		{
			if(p[0].a==p[1].a) p[0].count++;
			else 
			{
				p[0].a=p[1].a; 
				p[0].count=1;
			}
		}		 
		sum+=p[1].a;
	}
	for(int i=0;i<p[0].count;++i)sum-=p[0].a;
	cout<<sum;
	return 0; 
} 

08:白细胞计数

#include<iostream>
#include<cmath>
using namespace std;
double p[301];
int main()
{
	int n;
	cin>>n;
	double max=0.0,s,min=0.0;
	int a=0,b=0;
	double ave;
	cin>>p[0];
	max=p[0];
	min=p[0];
	ave=p[0];
	for(int i=1;i<n;++i)
	{
		cin>>p[i];
		if(p[i]>max)
		{
		    max=p[i];a=i;	
		}
		if(p[i]<min)
		{
			min=p[i];b=i;
		}
		ave+=p[i]; 
	}
	s=(ave-min-max)/(n-2);
	ave=0.0;
	for(int i=0;i<n;++i)
	{
		if(a==i||b==i)continue;
		if(fabs(s-p[i])>ave)ave = fabs(s-p[i]);
	}
	printf("%.2lf %.2lf",s,ave);
	return 0; 
}

09:直方图

#include<iostream>
#include<cmath>
using namespace std;
int p[10500];
int main()
{
	int n;
	int max,temp;
	cin>>n;
	cin>>p[0];
	max=p[0];
	for(int i=1;i<n;++i)
	{
		cin>>p[i];
		if(p[i]>max) max=p[i];
	}
	int *cot=new int[max+1]();
	for(int i=0;i<n;++i) cot[p[i]]++;
	for(int i=0;i<=max;++i) cout<<cot[i]<<endl;
	return 0; 
}

10:找最大数序列[这个双结构不错不错,值得学习]

#include <iostream>
using namespace std;
int main() 
{
	int n,index=0,temp,max=-1;
	cin>>n;
	int Max[40]={};
	for(int i=1;i<=n;++i)
	{
		do
		{
			cin>>temp;
			if(temp>max)
			{
				max=temp;
				index=0; 
				Max[index++]=i;
			} 
		    else if(temp==max&&Max[index-1]!=i)
			{
				Max[index++]=i;
			}
		}while(getchar()!='\n');
	}
	cout<<max<<endl<<Max[0];
	for(int i=1;i<index;++i)cout<<","<<Max[i];
}

11:连续出现的字符

#include<iostream>
using namespace std;
int main() 
{
	int n,count=0;
	string str;
	cin>>n>>str;
	char tag=str[0];
	for(int i=0;i<str.length();++i)
	{	
		if(str[i]==tag)
		{	
			count++;
			if(count>=n)
			{
				cout<<tag;
				return 0;
			}
		}
		else
		{
			tag=str[i];
			count=1;
		}	
	}
	cout<<"No"<<endl;
	return 0;
}

12:最长平台

#include<iostream>
using namespace std;
int main() 
{
	int n,count=1,tag,temp,max=1;
	cin>>n;
	cin>>tag;
	for(int i=1;i<n;++i)
	{	
		cin>>temp;
		if(temp==tag)
		{	
			++count;
			if(count>max)	max=count;
		}
		else
		{
			tag=temp;
			count=1;
		}	
	}
	cout<<max;
	return 0;
}

13:整数去重

#include<iostream>
using namespace std;
int p[20500];
int main() 
{
	int n,i;
	cin>>n;
	for(i=0;i<n;++i)
	{	
		cin>>p[i];
		for(int j=i-1;j>=0;--j)
		{
			if(p[j]==p[i])
			{
				i--;
				n--;
			}
		}
	}
	for(int k=0;k<i;++k ) 
	{
		if(k==0)cout<<p[k];
		else cout<<" "<<p[k]; 
	}
	return 0;
}

14:铺地毯

#include<iostream>
using namespace std;
struct
{
	int x,y;
	int w,h;
}point[10050];
int main() 
{
	int n,i,a,b,re=-2;
	cin>>n;
	for(i=0;i<n;++i)	cin>>point[i].x>>point[i].y>>point[i].w>>point[i].h;
	cin>>a>>b; 
	for(int i=0;i<n;++i) if((point[i].x<=a&&a<=(point[i].x+point[i].w))&&(point[i].y<=b&&b<=(point[i].y+point[i].h)))re=i;
	cout<<re+1;
	return 0;
}

15:接水问题【这是一个模拟题】

#include<iostream>
#include<algorithm>
using namespace std;
#define MAX 11000
int stu[MAX];
int now[MAX];
int main() 
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;++i) cin>>stu[i];
	for(int i=0;i<m;++i) now[i]=stu[i];
	sort(now,now+m);
	for(int i=0;i<(n-m);++i)
	{
		now[0]+=stu[i+m];
		sort(now,now+m);
	}
	cout<<now[m-1];
	return 0;
}

今天科比离开了我们。曼巴精神永存

posted @ 2020-01-27 13:19  东坡肉肉君  阅读(1258)  评论(0)    收藏  举报