目录
//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;
}