HDOJ2074 叠筐
来源:互联网 发布:linux编译android源码 编辑:程序博客网 时间:2024/06/06 00:29
题目链接:叠筐
这个题目还是挺有意思的,我做了很久,不过还是一次就过了。
分析题目以及题目所给的例子我们可以得出一些规律:
1)输出的字符是一圈一圈的,并且内圈外圈交替
2)行数line 是奇数,输入的第一个字符总是在中间
要让他在中间,可以找到这样的规律,line+1=:(假设输入11 A B)
如果A在最外面一层:2,6,10....
如果B在最外面一层:4,8,12...
也就是line+1%4 == 0与line+1%4 != 0的区别了
(我是在前面使用了交换的方式,具体参考代码)
3)
为了看起来好看些,先写出这个line = 5的例子(还没去掉角)
AAAAA
ABBBA
ABABA
ABBBA
AAAAA
我们可以把问题分成两部分来看
第一部分是
AAAAA
ABBB
ABA
AB
A
第二部分是(X代表已经有了的,第二部分不考虑)
XXXXX
XXXXA
XXXBA
XXBBA
XAAAA
到这里,我们就可以轻易想到用char[ ][ ]来存储数据
先将他全部设为空格,然后设置第一部分,然后是第二部分,最后是处理角的问题
当然,题目要求每个案例之间有个空行,我们可以使用开关来控制,也就是我下面代码的boo,具体看代码
下面AC代码:
import java.util.Scanner;public class Main{private static Scanner scanner;public static void main(String[] args) {scanner = new Scanner(System.in);boolean boo = false;while (scanner.hasNext()) {int line = scanner.nextInt();// 行数String a = scanner.next();String b = scanner.next();char cha = a.charAt(0);char chb = b.charAt(0);//if...交换cha/chbif((line+1)%4 == 0){char c = cha;cha = chb;chb = c;}char[][] ch = new char[line + 1][line + 1];for (int i = 0; i < ch.length; i++) {for (int j = 0; j < ch.length; j++) {ch[i][j] = ' ';}}if(boo){System.out.println();}// 控制上半部分int count = ch.length;for (int i = 1; i < ch.length; i++) {// 控制对角线--ch[i][i]for (int j = i; j < count; j++) {if (i % 2 != 0) {ch[i][j] = cha;ch[j][i] = cha;} else {ch[i][j] = chb;ch[j][i] = chb;}}count--;}/* * AAAAA * ABBB * ABA * AB * A */count = ch.length-1;for (int i = ch.length-1; i > ch.length-ch.length/2; i--) {for (int j = i; j > ch.length-count; j--) {if (i % 2 != 0) {ch[i][j] = cha;ch[j][i] = cha;} else {ch[i][j] = chb;ch[j][i] = chb;}}count--;}// 将角去掉(行数大于1的时候才去掉)if (line>1) {ch[1][1] = ' ';ch[1][ch.length - 1] = ' ';ch[ch.length - 1][1] = ' ';ch[ch.length - 1][ch.length - 1] = ' ';}// 打印for (int i = 1; i < ch.length; i++) {for (int j = 1; j < ch.length; j++) {System.out.print(ch[i][j]);}System.out.println();}boo = true;}}}
阅读全文
0 0
- HDOJ2074 叠筐
- HDOJ2074 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- 叠筐
- hdu2074-叠筐
- 叠筐 2074
- sdjzu2121叠筐
- HDU_2074叠筐
- 2074 叠筐
- HDU2074 叠筐
- 10-常用对象API(StringBuffer类-插入&删除&查找&修改)1 2 12-常用对象API(StringBuilder类) 1 2 13-常用对象API(StringBuilde
- 数据比赛大杀器----模型融合(stacking&blending)
- Mysql复制表结构、表数据
- 有状态和无状态的对象区别
- 基于Struts2和hibernate的WebSocket聊天室的实现教程一:环境搭建
- HDOJ2074 叠筐
- java格式化时间
- LeetCode650. 2 Keys Keyboard
- Qt 进行 Android 开发
- PHP语言学习基础(二)
- python爬虫环境安装-mysql环境安装
- .NET银联支付开发(一):支付
- 图解树状数组
- hibernate为什么要配置数据库的方言