题目描述
用5*3的点阵,表示数字
样例输入
618
样例输出
111 010 111
100 110 101
111 010 111
101 010 101
111 111 111
Key Points:
输入的数字是变长的-->用vector
vector<int> hang; 存储一个数字的一行
vector<vector<int> > matrix; 存储一个数字的每一行
vector<vector<vector<int> > > end; 存储每个数字的方阵
end[i][j][k] --> 第i个数字第j行的第k个数字
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
string s="";
cin>>s;
vector<vector<vector<int> > > end;
vector<vector<int> > matrix;
vector<int> hang;
for(int i=0; i<s.size(); i++) {
//1 矩阵初始化,全为1
matrix.clear();
for(int a=0; a<5; a++) {
hang.clear();
for(int b=0; b<3; b++) {
hang.push_back(1);
}
matrix.push_back(hang);
}
//2 识别数字
int num=s[i]-'0';
//3 转换矩阵
if(num==0) {
matrix[1][1]=0;
matrix[2][1]=0;
matrix[3][1]=0;
} else if(num==1) {
matrix[0][0]=0;
matrix[2][0]=0;
matrix[3][0]=0;
matrix[0][2]=0;
matrix[1][2]=0;
matrix[2][2]=0;
matrix[3][2]=0;
} else if(num==2) {
matrix[1][0]=0;
matrix[1][1]=0;
matrix[3][1]=0;
matrix[3][2]=0;
} else if(num==3) {
matrix[1][0]=0;
matrix[1][1]=0;
matrix[3][0]=0;
matrix[3][1]=0;
} else if(num==4) {
matrix[0][1]=0;
matrix[1][1]=0;
matrix[3][0]=0;
matrix[3][1]=0;
matrix[4][0]=0;
matrix[4][1]=0;
} else if(num==5) {
matrix[1][2]=0;
matrix[1][1]=0;
matrix[3][0]=0;
matrix[3][1]=0;
} else if(num==6) {
matrix[1][2]=0;
matrix[1][1]=0;
matrix[3][1]=0;
} else if(num==7) {
matrix[1][1]=0;
matrix[2][0]=0;
matrix[2][1]=0;
matrix[3][0]=0;
matrix[3][1]=0;
matrix[4][0]=0;
matrix[4][1]=0;
} else if(num==8) {
matrix[1][1]=0;
matrix[3][1]=0;
} else if(num==9) {
matrix[1][1]=0;
matrix[3][1]=0;
matrix[3][0]=0;
}
end.push_back(matrix);
}
//4 输出
for(int i=0; i<5; i++) {//5行
for(int j=0; j<end.size(); j++) {//输入数字的个数
for(int k=0; k<3; k++) {//3列
cout<<end[j][i][k];
/*
把输出方阵中的0 换成空格
if(end[j][i][k]==0) cout<<" ";
else cout<<end[j][i][k];
*/
}
cout<<" ";
}
cout<<endl;
}
}