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