POJ1051
2016-06-11 00:22
225 查看
看着挺麻烦的,写起来倒很顺手,把莫斯吗当做数字来存储就好,剩下的就是判断了。
今天刚搞定毕设,双爽爽的,写道题庆祝一下,就是代码太乱,懒得改。
#include <iostream>
#include <math.h>
using namespace std;
int po(int m){
int i,k=1;
for(i=0;i<m;i++)
k*=10;
return k;
}
int l[50],fn[3000],num[10000],xl[1000];
int main(){
int zn[100]={
12,
2111,
2121,
211,
1,
1121,
221,
1111,
11,
1222,
212,
1211,
22,
21,
222,
1221,
2212,
121,
111,
2,
112,
1112,
122,
2112,
2122,
2211,
1122,
1212,
2221,
2222
};
int i;
for(i=0;i<50;i++){
fn[zn[i]]=i;
if(zn[i]>1000)
l[i]=4;
else{
if(zn[i]>100)
l[i]=3;
else
{
if(zn[i]>10)
l[i]=2;
else
l[i]=1;
}
}
}
int z=0,kl=0,kn=0,m=0,ml=0,km=0,t=0,tn=1;
char s[1000],p;
cin>>t;
while(t>0){
cin>>s;
cout<<tn<<": ";
tn++;
z=0,kl=0,kn=0,m=0,ml=0,km=0;
for(i=0;i<strlen(s);i++){
z=s[i]-'A';
if(z<0 || z>25){
switch(s[i]){
case'_':z=26;break;
case'.':z=28;break;
case',':z=27;break;
case'?':z=29;break;
}
}
xl[kl]=l[z];
kl++;
ml=l[z];
m=zn[z];
while(m>0){
num[kn+ml]=m%10;
ml--;
m=m/10;
}
kn+=l[z];
}
ml=1;
for(i=kl-1;i>=0;i--){
m=xl[i];
km=0;
while(m>0){
km+=num[ml]*po(m-1);
ml++;
m--;
}
z=fn[km];
if(z>=0 && z<26){
p='A'+z;
cout<<p;
}
else{
switch(z){
case 26:cout<<"_";break;
case 27:cout<<",";break;
case 28:cout<<".";break;
case 29:cout<<"?";break;
}
}
}
cout<<endl;
t--;
}
return 0;
}
今天刚搞定毕设,双爽爽的,写道题庆祝一下,就是代码太乱,懒得改。
#include <iostream>
#include <math.h>
using namespace std;
int po(int m){
int i,k=1;
for(i=0;i<m;i++)
k*=10;
return k;
}
int l[50],fn[3000],num[10000],xl[1000];
int main(){
int zn[100]={
12,
2111,
2121,
211,
1,
1121,
221,
1111,
11,
1222,
212,
1211,
22,
21,
222,
1221,
2212,
121,
111,
2,
112,
1112,
122,
2112,
2122,
2211,
1122,
1212,
2221,
2222
};
int i;
for(i=0;i<50;i++){
fn[zn[i]]=i;
if(zn[i]>1000)
l[i]=4;
else{
if(zn[i]>100)
l[i]=3;
else
{
if(zn[i]>10)
l[i]=2;
else
l[i]=1;
}
}
}
int z=0,kl=0,kn=0,m=0,ml=0,km=0,t=0,tn=1;
char s[1000],p;
cin>>t;
while(t>0){
cin>>s;
cout<<tn<<": ";
tn++;
z=0,kl=0,kn=0,m=0,ml=0,km=0;
for(i=0;i<strlen(s);i++){
z=s[i]-'A';
if(z<0 || z>25){
switch(s[i]){
case'_':z=26;break;
case'.':z=28;break;
case',':z=27;break;
case'?':z=29;break;
}
}
xl[kl]=l[z];
kl++;
ml=l[z];
m=zn[z];
while(m>0){
num[kn+ml]=m%10;
ml--;
m=m/10;
}
kn+=l[z];
}
ml=1;
for(i=kl-1;i>=0;i--){
m=xl[i];
km=0;
while(m>0){
km+=num[ml]*po(m-1);
ml++;
m--;
}
z=fn[km];
if(z>=0 && z<26){
p='A'+z;
cout<<p;
}
else{
switch(z){
case 26:cout<<"_";break;
case 27:cout<<",";break;
case 28:cout<<".";break;
case 29:cout<<"?";break;
}
}
}
cout<<endl;
t--;
}
return 0;
}
相关文章推荐
- 【Leetcode】Palindrome Partitioning
- a 与&a 的区别
- java连接虚拟机中的redis,试了好长时间,终于连上了
- JS函数练习
- mysql 同一IP 产生太多终端的数据库连接导致阻塞
- csdn待改进点之12------>PC上的表情显示OK, 但在手机app上显示表情好吓人, 太大了
- 10_注解02_类扫描注解
- 2016-6-10
- Unity使用OpenCvSharp人脸识别
- Lex/Yacc Lex结合Yacc
- PYQT 自动resize 随着内容自动变化长度
- 基于Redux架构的单页应用开发总结(二)
- Android 官方资料
- 23、BeanUtils使用
- 将Linux下python默认版本切换成替代版本
- JavaWeb 项目开发中的技术总结
- iOS构建用户界面
- 通讯录数据的存取(三)—— 使用Intent修改通讯录
- csdn可能待改进点之11------>建议支持直接在博文中贴入图片, 而不需要上传、插入这么麻烦
- Linux从入门到放弃