洛谷P1000超级马里奥的神奇解法
话说上过洛谷的都知道,有一道经典例题P1000超级马里奥,这一题,可以说是非常简单非常经典,但是就算如此,还是可以人才辈出,我是个比较循规蹈矩的人(雾),所以我的代码就比较平常,也就是直接输出了所要求的超级马里奥的图片,那道题题目是这样的
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。
********一般人都会写个cout+endl来实现输出的操作,但是,网友的力量是强大的,只有想不到没有做不到的,
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
接下来我介绍几种 ,注意,非原创 比如这位大佬,看之前先来一波膜拜orz,orz;
#include <bits/stdc++.h>
using namespace std;
int mp[][];
int last[];
int n = , m = ;
// 在[x1-x2, y1-y2]绘制ch
void draw(int x1, int y1, int x2, int y2, char ch = '#'){
for(int i = x1; i <= x2; i++)
for(int j = y1; j <= y2; j++)
mp[i][j] = ch;
}
// 在[x1, y1]绘制ch
void draw(int x1, int y1, char ch = '#'){
draw(x1, y1, x1, y1, ch);
}
// 以[x, y]为左上角绘制泥土
void drawland(int x, int y){
draw(x, y, x+, y+);
for(int i = x+; i < x+; i+=)
draw(i, y+, i, y+, '.');
draw(x+, y+); draw(x+, y+);
draw(x+, y+); draw(x+, y+);
draw(x+, y+); draw(x+, y+);
draw(x+, y+); draw(x+, y+);
}
// 以[x, y]为左上角绘制小岛
void drawisland(int x, int y){
draw(x, y, x+, y+);
draw(x+, y+, x+, y+, '-');
draw(x+, y+, x+, y+);
draw(x+, y+, x+, y+, '-');
}
// 以[x, y]为左上角绘制金币
void drawcoin(int x, int y){
draw(x, y, x+, y+);
draw(x+, y+, x+, y+, '.');
draw(x+, y+, x+, y+);
draw(x, y, ' '); draw(x+, y, ' ');
draw(x, y+, ' '); draw(x+, y+, ' ');
}
// 以[x, y]为左上角绘制马里奥
void drawman(int x, int y){
draw(x, y+, x, y+, '*'); x++;
draw(x, y+, x, y+, '*'); x++;
draw(x, y+, x, y+); draw(x, y+, x, y+, '.'); draw(x, y+); x++;
draw(x, y+, x, y+); draw(x, y+, x, y+, '.');
draw(x, y+, x, y+, '.'); draw(x, y+, x, y+, '.'); x++;
draw(x, y+, x, y+); draw(x, y+, x, y+, '.'); x++;
draw(x, y+, x, y+, '.'); x++;
draw(x, y+, x, y+); draw(x, y+, '*'); x++;
draw(x, y+, x, y+); draw(x, y+, x, y+, '*'); x++;
draw(x, y, x+, y+, '.'); draw(x, y+, x+, y+, '*');
draw(x, y+); draw(x, y+, x+, y+); draw(x+, y+, '.');
draw(x+, y+, x+, y+, ' '); draw(x, y+, '.'); draw(x, y+, '.');
draw(x+, y, x+, y+); draw(x+, y+, x+, y+, ' ');
draw(x+, y, x+, y+, ' '); draw(x+, y+, x+, y+, ' ');
}
// 打印输出
void printscreen(){
for(int i = ; i <= n; i++){
last[i] = m;
while(mp[i][last[i]] == ' ')
last[i]--;
}
for(int i = ; i <= n; i++,puts(""))
for(int j = ; j <= last[i]; j++)
putchar(mp[i][j]);
}
int main(){
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
mp[i][j] = ' ';
// 绘制人
drawman(, );
// 绘制他脚下的三块泥土
drawland(, ); drawland(, ); drawland(, );
// 绘制金币下面的那个岛屿
drawisland(, );
// 绘制两个金币
drawcoin(, ); drawcoin(, );
// 输出
printscreen();
return ;
}
大致也看完了吧,这个人,不,这位大佬以坐标的方式,一个一个的把字符输出,最后达到了一样的效果,不得不说,这也太强了吧,你也去试试吧(雾)
如果只有这么点我也不会说是人才辈出了,下面这位可以说是暴力出奇迹了(雾)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<climits>
#include<cfloat>
#include<queue>
#include<cstddef> using namespace std;
char x;
int a[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
int main()
{
for(int i = ;i <= ;i++)
{
cout<<(char)a[i];
}
return ;
}
打表。。。
这也未尝不是一种不错的方法,能存下所有的坐标,也是厉害所在啊%%%!这些还不够达到人才辈出,没错,还有优秀的代码优秀的人!
接下来是优秀的人,但看他的代码没什么出众的地方,但是他的题解可以说是很有文化了,我截取他的代码的其中一段的题解
吾有一術。名之曰「画点」。欲行是術。必先得三數。曰「甲」。曰「乙」。曰「字」。乃行是術曰。 施「画」於「甲」。於「乙」。於「甲」。於「乙」。於「字」。 是謂「画点」之術也。 吾有一術。名之曰「画地」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。 加「甲」以八。名之曰「丙」。加「乙」以十三。名之曰「丁」。 施「画」於「甲」。於「乙」。於「丙」。於「丁」。於「井」。 吾有一列。名之曰「戊」。充「戊」以一。以三。以五。以七。 凡「戊」中之「己」。 加「己」以「甲」。名之曰「庚」。加「乙」以一。名之曰「丙」。加「乙」以十二。名之曰「丁」。 施「画」於「庚」。於「丙」。於「庚」。於「丁」。於「点」。 云云。
#include<stdio.h>
int main() {
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n"
"##############################################################\n"
"#...#......#.##...#......#.##...#......#.##------------------#\n"
"###########################################------------------#\n"
"#..#....#....##..#....#....##..#....#....#####################\n"
"########################################## #----------#\n"
"#.....#......##.....#......##.....#......# #----------#\n"
"########################################## #----------#\n"
"#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n"
"########################
################## ############\n"
);
return ;
}
看着题解,心里自愧不如,你说编程不比别人好也就算了,语文也被吊打。。。
今天的内容就只有这些了,在最后,请广大博主帮我看看,这个代码是什么意思?(雾)python学的少,没见过世面(大雾)
import zlib,base64;print zlib.decompress(base64.b64decode('eJylUkEOwCAIu/sKk95Mxv+fN2AsE0S3xR42sRYqUqtHM5TJfsaBQQyQZ3jTGLp+JcqIjBUMSUMYy1Z6EB1J0hCOrhuywnoeXo4gF5U1I0nxJhc3rKSmH2vDd/Ny+nkMa6I3F7xmallrgvRh0K9L4DzLPLZQ9IY2CdekTKNjwK/qqdwK4J7TeZSa/wxtWKjc3W4VjdKdqt2tsIp2q3Y4AbV3oO4=')).decode()
洛谷P1000超级马里奥的神奇解法的更多相关文章
- 洛谷 P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...
- 洛谷P1000 超级玛丽游戏(洛谷新手村1-1-1)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 洛谷 P2677 超级书架 2
P2677 超级书架 2 题目描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了.现在,只有书架的顶上还留有一点空间. 所有 ...
- 洛谷P2667 超级质数 [2017年6月计划 数论05]
P2667 超级质数 题目背景 背景就是描述,描述就是背景...... 题目描述 一个质数如果从个位开始,依次去掉一位数字,两位数字,三位数字......直到只剩一位数字中间所有剩下的数都是质数,则称 ...
- 洛谷P2676 超级书架 题解
题目传送门 题目一看就是贪心.C++福利来了:sort. 基本思路就是:要使奶牛最少那么肯定高的奶牛先啦. 直接排序一遍(从高到矮)然后while,搞定! #include<bits/stdc+ ...
- 洛谷 P2677 超级书架 2 题解
传送门 题目描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了.现在,只有书架的顶上还留有一点空间. 所有N(1 <= ...
- [洛谷P2174]小Z的神奇数列
题目大意:有$n(n\leqslant10^6)$个数,$5$种操作: $D\;x:$从数列中删除$x$,相同的数只删除一个 $B:$最大值 $S:$最小值 $M:$输出$max^{min}\pmod ...
- 洛谷P1000 超级玛丽游戏
这道题很简单,就是原样输出,只不过写起来有点恶心!!! code: #include<stdio.h> int main() { printf( " ********\n&quo ...
- 洛谷P2677 超级书架 2
题目描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了.现在,只有书架的顶上还留有一点空间. 所有N(1 <= N & ...
随机推荐
- mysql idb文件过大
分开 保存,每个数据库有自己的 innodb_file_per_table=1
- iOS商城demo、音乐播放器、视频通话、自定义搜索、转场动画等源码
iOS精选源码 微信自定义搜索框实现 一个商城Demo,持续更新中 在Object-C中学习数据结构与算法之排序算法 iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果 XLsn0wPushTimePi ...
- Klotski's Blog
教材: 唐朔飞 编著 "计算机组成原理(第2版)"高等教育出版社 2008年1月 习题指导教材: 唐朔飞 编著 "计算机组成原理–学习指导与习题解答(第2版)" ...
- [LC] 225. Implement Stack using Queues
Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...
- css3 transform 变形属性详解
本文主要介绍了css3 属性transform的相关内容,针对CSS3变形.CSS3转换.CSS3旋转.CSS3缩放.扭曲和矩阵做了详细的讲解.希望对你有所帮助. 这个很简单,就跟border-rad ...
- markdown常见用法
命令 生成目录 [TOC] 插入标题 # 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六季标题 插入shell 开头:```shell 结尾 ...
- python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...
- python的拆包(扫盲)
什么是拆包 拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典 直接获取里面数据的过程. 怎么拆包 1) 对列表进行拆包 my_list = [1, 3.14, "hello&q ...
- PHP PSR-2 代码风格规范
代码风格规范 本篇规范是 PSR-1 基本代码规范的继承与扩展. 本规范希望通过制定一系列规范化PHP代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成不便. 当多名程序员在多个项目中合 ...
- Kubernetes详解
1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是一个以容器为中心的基础架 ...