1.折点计数:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int a[1010];
int flag=1;
cin>>a[1];
cin>>a[2];
flag=a[2]>a[1]?1:0;//上升则1
int sum=0;
for(int i=3;i<=n;i++){
cin>>a[i];
if((a[i]>a[i-1]&&!flag)||(a[i]<a[i-1]&&flag)){
sum++;
flag=flag>0?0:1;
}
}
cout<<sum<<endl;
return 0;
}
2.俄罗斯方块:
#include<bits/stdc++.h>
struct point{
int x,y;
bool down=0;//是否为最下层点
}p[4]; //标记b中点
using namespace std;
int main(){
ios::sync_with_stdio(false);//提速cin cout
int a[20][10]={{0}};
//memset(a,1,sizeof(a));.二维整型数组直接利用 memset() 函数初始化时,只能初始化为 0 或 -1 ,否则将会被设为随机值。
int b[4][4]={{0}};//二维数组全赋值为0
int insert,low=100;
int count=0;
for(int i=14;i>=0;i--)
for(int j=0;j<10;j++)cin>>a[i][j];
for(int i=3;i>=0;i--)
for(int j=0;j<4;j++){
cin>>b[i][j];
if(b[i][j]==1)
{
low=min(low,i);
p[count].x=i;
p[count].y=j;
count++;
}
}
for(int i=0;i<4;i++)
{
if(b[p[i].x-1][p[i].y]==0||p[i].x==0)//下面没有方块或者下面是底
p[i].down=1;
}
cin>>insert;
int flag=0;//是否到了停止点
for(int i=14;i>=0;i--){//把low(最低点)所放行
for(int z=0;z<4;z++){//对于下落行后每个最下点进行判断
if((p[z].down==1&&a[i+p[z].x-low-1][insert+p[z].y-1]==1)||(p[z].down==1&&i+p[z].x-low==0)){//下面是方块或者触底了
flag=1;//找到了
for(int m=0;m<4;m++){
a[i+p[m].x-low][insert+p[m].y-1]=1;
}
break;
}
if(flag)break;
}
if(flag)break;
}
for(int i=14;i>=0;i--){
for(int j=0;j<10;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
结果展示: