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;elsecout<<"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++; } elsefor(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;
}