• 第十一周


     

    这个作业属于那个课程C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3201
    我在这个课程的目标是 递归函数
    这个作业在那个具体方面帮助我实现目标 熟练的运用递归函数
    参考文献 c语言程序设计p221
    7-1 汉诺塔问题* (10 分)
     

    汉诺塔是一个源于印度古老传说的益智玩具。据说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,大梵天命令僧侣把圆盘移到另一根柱子上,并且规定:在小圆盘上不能放大圆盘,每次只能移动一个圆盘。当所有圆盘都移到另一根柱子上时,世界就会毁灭。

    题图1.jpg

    请编写程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。

    输入格式

    圆盘数 起始柱 目的柱 过度柱

    输出格式

    移动汉诺塔的步骤
    每行显示一步操作,具体格式为:
    盘片号: 起始柱 -> 目的柱
    其中盘片号从 1 开始由小到大顺序编号。

    输入样例

    3
    a c b
    

    输出样例1: a -> c

    2: a -> b

    1: c -> b

    3: a -> c

    1: b -> a

    2: b -> c

    1: a -> c

    实验代码:

     1 def move(n, a, b, c):
     2     if n == 1:
     3         s=str(n)+':'
     4         print(s,a,'->',b)
     5     else:
     6         move(n-1,a,c,b)
     7         s=str(n)+':'
     8         print(s,a, '->',b)
     9         move(n-1,c,b,a)
    10 n=int(input())
    11 x,y,z=(input().split())
    12 move(n,x,y,z)

    本题调试过程:

    太简单

    7-2 估值一亿的AI核心代码 (20 分)
     

    AI.jpg

    以上图片来自新浪微博。

    本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:

    • 无论用户说什么,首先把对方说的话在一行中原样打印出来;
    • 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;
    • 把原文中所有大写英文字母变成小写,除了 I
    • 把原文中所有独立的 can youcould you 对应地换成 I canI could—— 这里“独立”是指被空格或标点符号分隔开的单词;
    • 把原文中所有独立的 Ime 换成 you
    • 把原文中所有的问号 ? 换成惊叹号 !
    • 在一行中输出替换后的句子作为 AI 的回答。

    输入格式:

    输入首先在第一行给出不超过 10 的正整数 N,随后 N 行,每行给出一句不超过 1000 个字符的、以回车结尾的用户的对话,对话为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。

    输出格式:

    按题面要求输出,每个 AI 的回答前要加上 AI: 和一个空格。

    输入样例:

    6
    Hello ?
     Good to chat   with you
    can   you speak Chinese?
    Really?
    Could you show me 5
    What Is this prime? I,don 't know
    

    输出样例:

    Hello ? AI: hello! Good to chat with you AI: good to chat with you can you speak Chinese? AI: I can speak chinese! Really? AI: really! Could you show me 5 AI: I could show you 5 What Is this prime? I,don 't know AI: what Is this prime! you,don't know

    实验代码:

     1 n=int(input())
     2 i,f=0,0
     3 l=[]
     4 fat=[]
     5 while i<n:
     6         s=input()
     7         i=i+1
     8         for x in s.split(" "):
     9             if x!="":
    10                 l.append(x)
    11 
    12         relizeword=" ".join(l)
    13         fat=list(relizeword)
    14         relizeword=relizeword.lower()
    15         l=list(relizeword)
    16         
    17         while f<len(l):
    18             if l[f]=='i' and fat[f]=='I':
    19                 l[f]='I'
    20             if l[f]=='?':
    21                 l[f]='!'
    22             if (l[f]=='I' and not l[f+1].isalpha() and not l[f-1].isalpha()):
    23                 l[f]='you'
    24             f=f+1
    25 
    26         relizeword="".join(l)
    27         l=[]
    28         f=0
    29 
    30         for x in relizeword.split(" "):
    31             if x!="":
    32                 if x=='me':
    33                     x='you'
    34                 l.append(x)
    35         while f<len(l):
    36             if l[f]=='could':
    37                     if l[f+1].find("you")>=0 and len(l[f+1])<=4:
    38                         l[f]='I'
    39                         l[f+1]='could'
    40                         f=f+1
    41             if l[f]=='can':
    42                     if l[f+1].find("you")>=0 and len(l[f+1])<=4:
    43                         l[f]='I'
    44                         l[f+1]='can'
    45                         f=f+1
    46             f=f+1
    47         relizeword=""
    48         f=0
    49         print(l)
    50         while f<len(l):
    51             if f!=len(l)-1:
    52                 if len(l[f+1])!=1 and (l[f+1].isalnum() or l[f+1].find("'")<0):
    53                     relizeword=relizeword+l[f]+" "
    54                 else:
    55                     relizeword=relizeword+l[f]
    56             else:
    57                 relizeword=relizeword+l[f]
    58             f=f+1
    59         
    60         l=[]
    61         print("AI: %s"%relizeword) 

    本题调试过程解决方案:

    问题太多了,总之最难的就在消除空格,但由于脑子不够,C语言写了很久放弃了,换python写了一天就写出来了.

    运行结果截图:

     
    7-3 ***八皇后问题 (20 分)
     

    在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。

    现在我们把棋盘扩展到 n × n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两格之间空一格)。

    输入格式

    正整数 n (0 < n ≤ 12)

    输出格式

    若问题有解,则输出全部摆法(两种摆法之间空一行),否则输出 None。

    要求:试探的顺序逐行从左往右的顺序进行,请参看输出样例2。

    输入样例1

    3
    

    输出样例1

    None
    

    输入样例2

    6
    

    输出样例2

    . Q . . . .
    . . . Q . .
    . . . . . Q
    Q . . . . .
    . . Q . . .
    . . . . Q .
    
    . . Q . . .
    . . . . . Q
    . Q . . . .
    . . . . Q .
    Q . . . . .
    . . . Q . .
    
    . . . Q . .
    Q . . . . .
    . . . . Q .
    . Q . . . .
    . . . . . Q
    . . Q . . .
    
    . . . . Q .
    . . Q . . .
    Q . . . . .
    . . . . . Q
    . . . Q . .
    . Q . . . .
    
     

    实验代码:

    就是一个搜索和枚举.

    | 周/日期   | 这周所花的时间 | 代码行 | 学到的知识点简介                                             | 目前比较疑惑的问题                                           |
    | --------- | -------------- | ------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
    | 3/3-3/9   | 3h             | 100    | fscanf和fprintf还有fgets用法                                 | 运用有结构的代码时总运行错误                                 |
    | 3/9-3/15  | 4h             | 50     | 学习了二维数组的定义                                         | 字符串的输入和输出老不规范                                   |
    | 3/15-3/22 | 5h             | 25     | 学习了用malloc定义二维数组                                   | 指针问题很让我恼火                                           |
    | 3.22-3.28 | 4h             | 35     | 复习了对指针的操作                                           | 对多级指针的定义和使用都不是太熟练和熟悉,其次对指针的作用大小不是非常理解 |
    | 3.28-4.5  | 3h             | 45     | 简单的把python以前不是很懂的又看了一遍,发现弄懂了许多以前不懂的 | 对算法的了解太低                                             |
    | 5.5-5.11  | 30h            | 200    | 在C语言上没有什么增进,但在python上熟练度比以前高了很多       | 疑问说不上,只是算法可能是编程中非常有趣而又有挑战性的一项东西 |

  • 相关阅读:
    大厂前端带来css3动画transition的使用和介绍全新认识动画
    js事件冒泡和事件捕获详解
    css3动画讲解,关于css3的@keyframes和animation
    [bug] Hive:java.net.ConnectException: Connection refused
    [bug] Hive:User root is not allowed to impersonate anonymous
    [bug] Hive:Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”
    [bug] Hive:Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
    [Python] 环境
    [Java] Web
    [计算机科学] 编程语言
  • 原文地址:https://www.cnblogs.com/2293002826PYozo/p/10846743.html
Copyright © 2020-2023  润新知