数位之和
思路
模拟
实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int res = 0;
while(n)
{
res+=n%10;
n/=10;
}
cout<<res;
}
消除类游戏
思路
暴力可以过
实现
#include<bits/stdc++.h>
using namespace std;
const int N = 35;
int a[N][N];
int st[N][N];
int m,n;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
int up = i,down = i,left = j,right = j;
while(up>=0 && a[up][j]==a[i][j]) up--;
while(down<n && a[down][j]==a[i][j]) down++;
while(left>=0 &&a[i][left]==a[i][j]) left--;
while(right<m &&a[i][right]==a[i][j]) right++;
up++;
down--;
left++;
right--;
if(right-left>=2)
{
while(right>=left)
{
st[i][right] = 1;
right--;
}
}
if(down-up>=2)
{
while(down>=up)
{
st[down][j] = 1;
down--;
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(st[i][j]) cout<<"0 ";
else cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
画图
思路
实现
#include<bits/stdc++.h>
using namespace std;
int m,n,q;
const int N = 105;
char a[N][N];
int st[N][N];
int dx[4] = {-1,0,1,0},dy[4] = {0,-1,0,1};
void dfs(int x,int y,char c)
{
a[x][y] = c;
st[x][y] = 1;
for(int i=0;i<4;i++)
{
int xx = x+dx[i],yy = y+dy[i];
if(xx>=0 &&xx<m &&yy>=0 &&yy<n && !st[xx][yy]&&a[xx][yy]!='|' &&a[xx][yy]!='-' &&a[xx][yy]!='+')
{
dfs(xx,yy,c);
}
}
}
int main()
{
cin>>m>>n>>q;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
a[i][j] = '.';
}
int op,x,y,x1,x2,y1,y2;
char c;
while(q--)
{
cin>>op;
if(op)
{
cin>>x>>y>>c;
memset(st, 0, sizeof st);
dfs(x,y,c);
}
else
{
cin>>x1>>y1>>x2>>y2;
if(x1==x2)
{
if(y1>y2) swap(y1,y2);
for(int j = y1;j<=y2;j++)
{
if(a[x1][j]=='-' || a[x1][j]=='+') a[x1][j] = '+';
else a[x1][j] = '|';
}
}
else
{
if(x1>x2) swap(x1,x2);
for(int j=x1;j<=x2;j++)
{
if(a[j][y1]=='|' || a[j][y1]=='+') a[j][y1] = '+';
else a[j][y1] = '-';
}
}
}
}
for(int i=n-1;i>=0;i--)
{
for(int j=0;j<m;j++)
{
cout<<a[j][i];
}
cout<<endl;
}
}
送货
思路
实现