220118数组

目录

//01:八戒买礼物

//02:倒置排序

//03:向量点积计算

//04:计算鞍点

//05:寻找配对数

//06:计算矩阵边缘元素之和

//07:与指定数字相同的数的个数

//08:扫雷游戏地雷数计算

//09:正方形长方形的个数

//10:矩阵交换行

//11:数组逆序重放

//13:年龄与疾病

//14:细菌的繁殖与扩散

//15:校门外的树

//16:反反复复

//17:有趣的跳跃


//01:八戒买礼物

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

//02:倒置排序

# include <iostream>
using namespace std;
int back(int);
void swap(int *,int *);
int main()
{
	int N,n,i;
	cin>>N;
	for(;N>0;N--)
	{
		cin>>n; 
		int *p=new int[n] ;
		int *q=new int[n];
		for(i=0;i<n;i++) 
		cin>>p[i]; 
		for (i=0;i<n;i++) //倒置
			q[i]=back(p[i]);
		for(int j=1;j<n;j++)//排序
			for(i=0;i<n-j;i++)
				{	if(q[i]>q[i+1])
					{
						swap(p[i],p[i+1]);
						swap(q[i],q[i+1]);
					}
				}
		for(i=0;i<n;i++) 
			cout<<p[i]<<" ";
		cout<<endl; 
	} 

	return 0;
}
int back(int a)
{
	long int b=0,i=1000000000;
	if(a==0)
		return b;
	else if(a>0)
	{
		while(a/i==0)
			i=i/10;
		while(a!=0)
		{
			b=b+a%10*i;
			i=i/10;
			a=a/10;
		}
		return b;
	}
	else if(a<0)
	{
		while(a/i==0)
			i=i/10;
		while(a!=0)
		{
			b=b+a%10*i;
			i=i/10;
			a=a/10;
		}
		return b;
	}
}
void swap(int *a,int *b)
{
	int *temp;
	temp=a;
	a=b;
	b=temp;
}

//03:向量点积计算

# include <iostream>
using namespace std;
int main()
{
	int n,i,sum;
	sum=0;
	cin>>n;
	int *a=new int[n];
	int *b=new int[n];
	for(i=0;i<n;i++)
		cin>>a[i];
	for(i=0;i<n;i++)
		cin>>b[i];
	for(i=0;i<n;i++)
		sum=sum+a[i]*b[i];
	cout<<sum;
	return 0;
}

//04:计算鞍点

# include <iostream>
using namespace std;
int main()
{
	int a[5][5],max,x,y;
	int i=0,j=0;
	int m=0;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			cin>>a[i][j];
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			if(a[i][j]>=a[i][0] && a[i][j]>=a[i][1] &&a[i][j]>=a[i][2] &&a[i][j]>=a[i][3] &&a[i][j]>=a[i][4] && a[i][j]<=a[0][j] && a[i][j]<=a[1][j] && a[i][j]<=a[2][j] && a[i][j]<=a[3][j] && a[i][j]<=a[4][j])
				{
					x=i+1;y=j+1;max=a[i][j];
					m++;
					
				}

	if(m&&x&&y)
	cout<<x<<" "<<y<<" "<<max;
	else
		cout<<"not found";
	return 0;
}

//05:寻找配对数

# include <iostream>
using namespace std;
int main()
{
	int n,i,a,b,c,s;
	s=0;
//	int l1=l2=l3=-1;
	cin>>n;
	int *p=new int[n];
	for(i=0;i<n;i++)
		cin>>p[i];
	for(a=0;a<n;a++)
	{
//		if(a==l1 || a==l2 || a==l3);
//		else 
		for(b=0;b<n;b++)
		{
			if(b==a 
//			|| b==l1 || b==l2 || b==l3 
			);
			else
			{
				for(c=0;c<n;c++)
					if(a==c || b==c 
//					 || c==l1 || c==l2 || c==l3 
					);
					else if(p[a]*p[b]==p[c] && a>b)
						{
							s++;
//							l1=a;
//							l2=b;
//							l3=c;
						}
			}
		}
	}
	cout<<s;
	return 0;
}

//06:计算矩阵边缘元素之和

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

//07:与指定数字相同的数的个数

# include <iostream>
using namespace std;
int main()
{
	int n,i,q,s;
	cin>>n;
	s=q=0;
	int *p=new int[n];
	for(i=0;i<n;i++)
		cin>>p[i];
	cin>>q;
	for(i=0;i<n;i++)
		if(q==p[i])
			s++;
	cout<<s;
	return 0;
}

//08:扫雷游戏地雷数计算

# include <iostream>
using namespace std;
int main()
{
	int m,n,i,j,s;
	cin>>m>>n;
	char **p=new char*[m];
	for(i=0;i<m;i++)
		p[i]=new char[n];
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			cin>>p[i][j];
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			if(p[i][j]=='*')
				cout<<"*";
			else
			{
				s=0;
				if(i-1>=0 && j-1>=0 && p[i-1][j-1]=='*'  )
					s++;
				if(i-1>=0 && p[i-1][j]=='*' )
					s++;
				if(i-1>=0 && j+1<n && p[i-1][j+1]=='*' )
					s++;
				if( j-1>=0 && p[i][j-1]=='*')
					s++;
				if( j+1<n && p[i][j+1]=='*'  )
					s++;					
				if( i+1<m && j-1>=0 && p[i+1][j-1]=='*' )
					s++;				
				if(i+1<m && p[i+1][j]=='*' )
					s++;				
				if( i+1<m && j+1<n && p[i+1][j+1]=='*' )
					s++;
				cout<<s;										
			}
		}
		cout<<endl;
	}
	return 0;
}

//09:正方形长方形的个数

# include <iostream>
using namespace std;
int max(int a ,int b) 
{
	return a>b?a:b; 
} 
int main()
{
	int m,n,x,y,z;
	int zong=0,zheng=0; 
	cin>>m>>n;
	for(x=1;x<=m;x++)
		for(y=1;y<=n;y++) 
			zong=zong+x*y; 
	for(z=1;z<=max(m,n);z++)
	{ 
		if(m-z>=0 && n-z>=0) 
			zheng=zheng+(m-z+1)*(n-z+1); 
	} 
	cout<<zheng<<","<<zong-zheng; 
	return 0;
}

//10:矩阵交换行

# include <iostream>
using namespace std;
void change(int *a,int *b); 
int main()
{
	int p[5][5];
	int i,j,m,n;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			cin>>p[i][j];
	cin>>m>>n; 
	for(i=0;i<5;i++)
		for(j=0;j<5;j++)
			if(i==m-1)
				change(&p[m-1][j],&p[n-1][j]); 
	for(i=0;i<5;i++)
	{ 
		for(j=0;j<5;j++)
			cout<<p[i][j]<<" ";
		cout<<endl; 
	} 
	return 0;
} 
 void change(int *a,int *b)
 {
 	int temp;
	 temp=*a;
	 *a=*b;
	 *b=temp;  
 } 

//11:数组逆序重放

# include <iostream>
using namespace std;
void change(int *a,int *b); 
int main()
{
	int n;
	cin>>n;
	int *p=new int[n];
	int i; 
	for(i=0;i<n;i++)
		cin>>p[i];
	for(i=0;i<n/2;i++) 
		change(&p[i],&p[n-i-1]); 
	for(i=0;i<n;i++)
		cout<<p[i]<<" "; 
} 
 void change(int *a,int *b)
 {
 	int temp;
	 temp=*a;
	 *a=*b;
	 *b=temp;  
 } 

//13:年龄与疾病

# include <iostream>
using namespace std;
int main()
{
	int n,i;
	double a,b,c,d,e;
	a=b=c=d=0; 
	cin>>n;
//	i=n; 
//	while(i) 
//	{
//		cin>>e; 
//		if(e>0 && e<=18) 
//			a++;
//		else if(e>=19 && e<=35) 
//			b++;			 
//		else if(e>=36 && e<=60) 
//			c++;
//		else if(e>=61 ) 
//			d++;
//		i--; 
//	} 
	int *p= new int [n]; 
	for(i=0;i<n;i++) 
		cin>>p[i]; 
	i--; 
	while(i>=0)
	{
		if(p[i]>0 && p[i]<=18) 
			a++;
		else if(p[i]>=19 && p[i]<=35) 
			b++;			 
		else if(p[i]>=36 && p[i]<=60) 
			c++;
		else if(p[i]>=61 ) 
			d++;		
		i--; 
	} 
	printf("%.2lf",(a/n)*100) ; 
	cout<<"%"<<endl;
	printf("%.2lf",(b/n)*100) ; 
	cout<<"%"<<endl;
	printf("%.2lf",(c/n)*100) ; 
	cout<<"%"<<endl;
	printf("%.2lf",(d/n)*100) ; 
	cout<<"%";			 
	return 0;
}

//14:细菌的繁殖与扩散

# include <iostream>
using namespace std;
void ddd(int (*a)[9],int (*b)[9])
{
	int i,j,k; 
	for(i=0;i<9;i++)
		for(j=0;j<9;j++)
		{
			if(b[i][j])
{k=b[i][j];
if(i-1>=0 && j-1>=0)	a[i-1][j-1]=a[i-1][j-1]+k;
if(i-1>=0)	a[i-1][j]=a[i-1][j]+k;
if(i-1>=0 && j+1<9)	a[i-1][j+1]=a[i-1][j+1]+k;
if(j-1>=0)	a[i][j-1]=a[i][j-1]+k;
a[i][j]=a[i][j]+2*k;
if(j+1<9)	a[i][j+1]=a[i][j+1]+k;
if(i+1<9 && j-1>=0)	a[i+1][j-1]=a[i+1][j-1]+k;
if(i+1<9 )	a[i+1][j]=a[i+1][j]+k;
if(i+1<9 && j+1<9)	a[i+1][j+1]=a[i+1][j+1]+k;
}
		}
}
void print(int (*a)[9]) 
{
	int i,j;
	for(i=0;i<9;i++)
	{
		for(j=0;j<9;j++)
			cout<<a[i][j]<<" "; 
		cout<<endl;	
	} 
} 
int main()
{
	int p[9][9]; 
	int a[9][9];
	int b[9][9];
	int c[9][9];
	int d[9][9];

	int m,day,i,j;
	for(i=0;i<9;i++) 
		for(j=0;j<9;j++) 
		{p[i][j]=a[i][j]=b[i][j]=c[i][j]=d[i][j]=0;}
	cin>>m>>day;	
	p[4][4]=m; 
	
	ddd(a,p);
	ddd(b,a);
	ddd(c,b);
	ddd(d,c); 
	
	if(day==1)
		print(a);
	else if(day==2)
		print(b);
	else if(day==3)
		print(c);
	else if(day==4)
		print(d);
		 
	return 0;
}

//15:校门外的树

# include <iostream>
using namespace std;
int main()
{
	int x;
	cin>>x;
	int *p=new int[x+1];
	int m,i,a,b,sum=0;
	cin>>m;
	for(i=0;i<=x;i++)
		p[i]=1; 
	for(;m>0;m--)
		 {
		 	cin>>a>>b;
			for(;a<=b;a++) 
				p[a]=0; 
		 } 
	for(i=0;i<=x;i++)
		sum=sum+p[i]; 	
	cout<<sum; 
	return 0;
}

//16:反反复复

# include <iostream> 
#include <math.h>
using namespace std;
int main()
{
	int lie,i,j,hang;
	cin>>lie; 
	char xa[200]={'0'}; 
	cin>>xa;
	hang=0; 
	for(i=0;i<200;i++) 
		if(xa[i])
			hang++; 
	hang=ceil(double (hang)/lie); 
		for(i=0;i<hang*lie;i++) 
			if(xa[i]=='0')
				xa[i]='x'; 


	char **c=new char*[hang];
	for(i=0;i<hang;i++)
		c[i]=new char[lie];
			
	int k=0; 
	for(i=0;i<hang;i++)
	{
		if(i%2==0) 
			for(j=0;j<lie;j++)
			{	c[i][j]=xa[k];
				k++; 
			} 
		else
			for(j=lie-1;j>=0;j--)
			{	c[i][j]=xa[k];
				k++; 
			} 			 
	} 
	for(i=0;i<lie;i++){ 
		for(j=0;j<hang;j++)
			cout<<c[j][i];  } 
	return 0;
}

//17:有趣的跳跃

# include <iostream> 
# include <cmath> //int abs(x) 
using namespace std;
int main()
{
	int n,i,yz1,temp,j;
	cin>>n;
	long long int *p=new long long int[n];
	for(i=0;i<n;i++) 
		cin>>p[i];
	int *asdf=new int[n-1]; 
	for(i=0;i<n-1;i++)
		asdf[i]=abs(p[i]-p[i+1]); 
	int *yanzheng1=new int[n-1];
	for(i=0;i<n-1;i++)
		yanzheng1[i]=i+1;
		
	for(i=0;i<n-1;i++)
		for(j=0;j<n-1-i-1;j++) 
			if(asdf[j]>asdf[j+1])
			{temp=asdf[j];asdf[j]=asdf[j+1];asdf[j+1]=temp;} 
	yz1=0; 
	for(i=0;i<n-1;i++)
	{ 
		if(yanzheng1[i]==asdf[i])
			yz1++; 

	}
	if(yz1==n-1  || n==1)
		cout<<"Jolly";
	else 
		cout<<"Not jolly"; 
	return 0;
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值