2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int c[21][21],a[510],alen; char s[110]; void change(int x) { int now=alen; while(x>0) { a[now--]=x%2; x/=2; } }//转2进制 int main() { int n,m;scanf("%d%d ",&n,&m);//避免输入错误多一个空格 cin.getline(s+1,100); int len=strlen(s+1); memset(a,0,sizeof(a)); alen=0; for(int i=1;i<=len;i++) { int x=(s[i]==' ') ?0:(s[i]-'A'+1); alen+=5;change(x); }//字母转数字再转2进制 memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) c[i][j]=2;//初始化 c[1][1]=a[1]; int k=2,x=1,y=1,t=0; while(k<=n*m) { while(c[x+dx[t]][y+dy[t]]!=2) { t++; t=t%4; } x=x+dx[t]; y=y+dy[t]; c[x][y]=a[k]; k++; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) printf("%d",c[i][j]);//输出 return 0; } -
0
#include<bits/stdc++.h> using namespace std; int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; int c[21][21],a[510],alen; char s[110]; void change(int x) { int now=alen; while(x>0) { a[now--]=x%2; x/=2; } }//转2进制 int main() { int n,m;scanf("%d%d ",&n,&m);//避免输入错误多一个空格 cin.getline(s+1,100); int len=strlen(s+1); memset(a,0,sizeof(a)); alen=0; for(int i=1;i<=len;i++) { int x=(s[i]==' ') ?0:(s[i]-'A'+1); alen+=5;change(x); }//字母转数字再转2进制 memset(c,0,sizeof(c)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) c[i][j]=2;//初始化 c[1][1]=a[1]; int k=2,x=1,y=1,t=0; while(k<=n*m) { while(c[x+dx[t]][y+dy[t]]!=2) { t++; t=t%4; } x=x+dx[t]; y=y+dy[t]; c[x][y]=a[k]; k++; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) printf("%d",c[i][j]);//输出 return 0; }
- 1
信息
- ID
- 794
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 84
- 已通过
- 43
- 上传者