9.1
数列分段
思路:考虑出现数字变化次数再加一即可
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int a[1005];
int main()
{
int n,c,i;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
c=1;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
{
c++;
}
}
cout<<c<<endl;
return 0;
}
12.2.消除类游戏
思路:有备用数组将可以消除的行,列的元素分别置零,在把未消除的数复制过来即可
代码及注释:
#include<iostream>
#include<algorithm>
using namespace std;
int a[40][40];
int b[40][40];
int main()
{
int n,m,i,j,t,k;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<n;i++)//标志数组清1
{
for(j=0;j<m;j++)
{
b[i][j]=1;
}
}
for(i=0;i<n;i++)//统计每行
{
for(j=1;j<m-1;j++)
{
if((a[i][j]==a[i][j-1])&&(a[i][j]==a[i][j+1]))
{
b[i][j]=0;
b[i][j-1]=0;
b[i][j+1]=0;
}
}
}
for(i=0;i<m;i++)//统计每列
{
for(j=1;j<n-1;j++)
{
if((a[j][i]==a[j-1][i])&&(a[j][i]==a[j+1][i]))
{
b[j][i]=0;
b[j-1][i]=0;
b[j+1][i]=0;
}
}
}
for(i=0;i<n;i++)//复制未消除的数
{
for(j=0;j<m;j++)
{
if(b[i][j]==1) b[i][j]=a[i][j];
}
}
for(i=0;i<n;i++)//输出
{
for(j=0;j<m;j++)
{
cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}