第一题:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ll n;scanf("%lld",&n);
int res=0;
while(n){
res+=n%10;
n/=10;
}
printf("%d\n",res);
return 0;
}
第二题:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=35;
int g[N][N];
int a[N][N];
int main(){
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
memcpy(g,a,sizeof g);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;){
if(j+2<=m&&a[i][j+1]==a[i][j]&&a[i][j+2]==a[i][j]){
int t=a[i][j];
while(j<=m&&a[i][j]==t){
g[i][j]=0;
j++;
}
}
else j++;
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;){
if(j+2<=n&&a[j+1][i]==a[j][i]&&a[j+2][i]==a[j][i]){
int t=a[j][i];
while(j<=n&&a[j][i]==t){
g[j][i]=0;
j++;
}
}
else j++;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
printf("%d ",g[i][j]);
puts("");
}
return 0;
}
第三题:
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pii;
const int N=105;
int m,n,q;
char g[N][N];
int s,t;
bool st[N][N];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void bfs(char c){
memset(st,false,sizeof st);
queue<pii> q;
q.push({s,t});
st[s][t]=true;
g[s][t]=c;
while(q.size()){
pii fs=q.front();
q.pop();
for(int i=0;i<4;i++){
int x=fs.x+dx[i];
int y=fs.y+dy[i];
if(x<0||x>=n||y<0||y>=m||g[x][y]=='-'||g[x][y]=='|'||g[x][y]=='+'||st[x][y]) continue;
st[x][y]=true;
g[x][y]=c;
q.push({x,y});
}
}
}
int main(){
scanf("%d%d%d",&m,&n,&q);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
g[i][j]='.';
while(q--){
int op;
scanf("%d",&op);
if(op==0){
int x1,y1,x2,y2;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1==x2){
for(int i=min(y1,y2);i<=max(y1,y2);i++){
if(g[i][x1]=='-'||g[i][x1]=='+') g[i][x1]='+';
else g[i][x1]='|';
}
}
else{
for(int i=min(x1,x2);i<=max(x1,x2);i++){
if(g[y1][i]=='|'||g[y1][i]=='+') g[y1][i]='+';
else g[y1][i]='-';
}
}
}
else{
char c;
scanf("%d%d",&t,&s);
cin>>c;
bfs(c);
}
}
for(int i=n-1;i>=0;i--){
for(int j=0;j<m;j++)
printf("%c",g[i][j]);
puts("");
}
return 0;
}
第四题:
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
set<int> g[N];
int n,m;
int p[N];
vector<int> ans;
int find(int x){
if(p[x]!=x) p[x]=find(p[x]);
return p[x];
}
void dfs(int u){
//puts("bug");
while(g[u].size()){
int t=*g[u].begin();
g[u].erase(t),g[t].erase(u);
dfs(t);
}
ans.push_back(u);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) p[i]=i;
while(m--){
int a,b;scanf("%d%d",&a,&b);
g[a].insert(b);
g[b].insert(a);
if(find(a)!=find(b)){
p[find(a)]=find(b);
}
}
int t=0;
for(int i=1;i<=n;i++){
if(find(i)!=find(1)){
puts("-1");
return 0;
}
if(g[i].size()%2) t++;
}
if((t!=0&&t!=2)||(t==2&&g[1].size()%2==0)){
puts("-1");
return 0;
}
dfs(1);
for(int i=ans.size()-1;i>=0;i--){
printf("%d ",ans[i]);
}
return 0;
}
第五题:
待补充