首页 > ACM题库 > HDU-杭电 > hdu 3114 Bold ASCII Lines待解决[解题报告]C++
2014
03-02

hdu 3114 Bold ASCII Lines待解决[解题报告]C++

Bold ASCII Lines

问题描述 :

Your grandmother recently developed a passion for the internet and the new technologies in general, and is now discovering the wonders of ASCII art. Unfortunately, her sight is not as it once was, and she has difficulty seeing the pictures.
Sum of Cubes

Moreover, she cannot merely increase the font size as she usually does, because doing so makes the characters stand out more on their own and less as a whole. You come up with a solution: writing a program which duplicates the ASCII lines in order to make them look bold.

输入:

The first line of the input will contain n, the number of test cases. For each test case, the first line will contain the positive integers w and h, both of which will be at most 100. h lines will follow, each containing w ASCII characters.The character “.” (dot) will denote the background ASCII “color”, and the only other color will be “*” (star). For each image, add a 1-character wide border of dots around the image, and proceed to replace every single star character in the original picture with a Sum of Cubes , where the middle star is positioned where the original star was.

输出:

The first line of the input will contain n, the number of test cases. For each test case, the first line will contain the positive integers w and h, both of which will be at most 100. h lines will follow, each containing w ASCII characters.The character “.” (dot) will denote the background ASCII “color”, and the only other color will be “*” (star). For each image, add a 1-character wide border of dots around the image, and proceed to replace every single star character in the original picture with a Sum of Cubes , where the middle star is positioned where the original star was.

样例输入:

2
2 1
*.
3 3
.*.
*.*
.*.

样例输出:

.*..
***.
.*..
---
..*..
.***.
*****
.***.
..*..


  1. 约瑟夫也用说这么长……很成熟的一个问题了,分治的方法解起来o(n)就可以了,有兴趣可以看看具体数学的第一章,关于约瑟夫问题推导出了一系列的结论,很漂亮

  2. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。

  3. for(int i=1; i<=m; i++){
    for(int j=1; j<=n; j++){
    dp = dp [j-1] + 1;
    if(s1.charAt(i-1) == s3.charAt(i+j-1))
    dp = dp[i-1] + 1;
    if(s2.charAt(j-1) == s3.charAt(i+j-1))
    dp = Math.max(dp [j - 1] + 1, dp );
    }
    }
    这里的代码似乎有点问题? dp(i)(j) = dp(i)(j-1) + 1;这个例子System.out.println(ils.isInterleave("aa","dbbca", "aadbbcb"));返回的应该是false