遞歸編程訓(xùn)練

遞歸真的好難?。?br> 編程題#1:單詞翻轉(zhuǎn)

來源: POJ (Coursera聲明:在POJ上完成的習(xí)題將不會計(jì)入Coursera的最后成績。)
注意: 總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB
描述
輸入一個(gè)句子(一行),將句子中的每一個(gè)單詞翻轉(zhuǎn)后輸出。

輸入
只有一行,為一個(gè)字符串,不超過500個(gè)字符。單詞之間以空格隔開。所謂單詞指的是所有不包含空格的連續(xù)的字符。
這道題請用cin.getline輸入一行后再逐個(gè)單詞遞歸處理。
輸出
翻轉(zhuǎn)每一個(gè)單詞后的字符串,單詞之間的空格需與原文一致。

樣例輸入
hello world.

樣例輸出
olleh .dlrow

#include<iostream>  
using namespace std;
int i = 0;
char input[501];
int recur() {
    char c = input[i];
    i++;
    if (c == ' ') {
        return 1;
    }
    if (c == '\0'){
        return 0;
    }
    if (c != ' '&&c != '\0') {
        recur();
        cout << c;
    }
    return 1;
}
int main() {
    cin.getline(input, 501);
    if (recur() == 1)//只有最外面一層的recur函數(shù)才會有返回值到這里,所以可以放心的打‘ ’  
        cout << ' ';
    while (input[i] != '\0') {
        if (recur() == 1)//每次遇到空格,都會返回1,所以打印一個(gè)空格  
            cout << ' ';
    }
    if (input[i] == '\0') {
        cout << endl;//最后輸出換行符  
        return 0;
    }
}

編程題#2:角谷猜想

來源: POJ (Coursera聲明:在POJ上完成的習(xí)題將不會計(jì)入Coursera的最后成績。)
注意: 總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB
描述
所謂角谷猜想,是指對于任意一個(gè)正整數(shù),如果是奇數(shù),則乘3加1,如果是偶數(shù),則除以2,得到的結(jié)果再按照上述規(guī)則重復(fù)處理,最終總能夠得到1。如,假定初始整數(shù)為5,計(jì)算過程分別為16、8、4、2、1。
程序要求輸入一個(gè)整數(shù),將經(jīng)過處理得到1的過程輸出來。

輸入
一個(gè)正整數(shù)

輸出
從輸入整數(shù)到1的步驟,每一步為一行,每一部中描述計(jì)算過程,假定輸入為7,則輸出為:
73+1=22
22/2=11
11
3+1=34
34/2=17
173+1=52
52/2=26
26/2=13
13
3+1=40
40/2=20
20/2=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
最后一行輸出"End",如果輸入為1,直接輸出"End"

樣例輸入
5

樣例輸出
5*3+1=1616/2=88/2=44/2=22/2=1End

#include"iostream"
using namespace std;
void cal(int x){
    if (x == 1){
        cout << "End";
        return;
    }
    if (x % 2 == 0){
        cout << x << "/2=" << x / 2 << endl;
        cal(x / 2);
    }
    else{
        cout << x << "*3+1=" << x * 3 + 1 << endl;
        cal(x * 3 + 1);
    }
}
int main(){
    int x;
    cin >> x;
    cal(x);
return 0;
}

編程題#3:排隊(duì)游戲
來源: POJ (Coursera聲明:在POJ上完成的習(xí)題將不會計(jì)入Coursera的最后成績。)
注意: 總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB
描述
在幼兒園中,老師安排小朋友做一個(gè)排隊(duì)的游戲。首先老師精心的把數(shù)目相同的小男孩和小女孩編排在一個(gè)隊(duì)列中,每個(gè)小孩按其在隊(duì)列中的位置發(fā)給一個(gè)編號(編 號從0開始)。然后老師告訴小朋友們,站在前邊的小男孩可以和他后邊相鄰的小女孩手拉手離開隊(duì)列,剩余的小朋友重新站攏,再按前后相鄰的小男孩小女孩手拉 手離開隊(duì)列游戲,如此往復(fù)。由于教師精心的安排,恰好可以保證每兩個(gè)小朋友都能手拉手離開隊(duì)列,并且最后離開的兩個(gè)小朋友是編號最小的和最大的兩個(gè)小朋 友。(注:只有小男孩在前,小女孩在后,且他們兩之間沒有其他的小朋友,他們才能手拉手離開隊(duì)列)。請根據(jù)老師的排隊(duì),按小女孩編號從小到大的順序,給出 所有手拉手離開隊(duì)列的小男孩和小女孩的編號對。

輸入
用一個(gè)字符串代表小朋友隊(duì)列。字符串中只會出現(xiàn)兩個(gè)字符(樣例輸入里用的是 括號但實(shí)際數(shù)據(jù)則不一定),分別代表小男孩和小女孩,首先出現(xiàn)的字符代表小男孩,另一個(gè)字符代表小女孩。小孩總數(shù)不超過100

輸出
按小女孩編號順序,順序輸出手拉手離開隊(duì)列的小男孩和小女孩的編號對,每行一對編號,編號之間用一個(gè)空格分隔。

Paste_Image.png
#include"iostream"
using namespace std;
void date(char q[], char b,int n,int len){
    if (n ==len)
        return;
    for (int i = n; q[i] != '/0'; i++){
        if (q[i] == b){
            date(q, b, i + 1,len);
            return;
        }else{
            for (int j = i-1; j>=0; j--){
                if (q[j] == b){
                    q[j] = '0';
                    q[i] = '0';
                    cout << j << ' ' << i << endl;
                    date(q, b, i + 1,len);
                        return;

                }
            }
        }
    }
}
int main(){
    char q[101];
    cin.getline(q, 100);
    date(q, q[0], 0,strlen(q));
    return 0;
}

編程題#4:擴(kuò)號匹配問題
來源: POJ (Coursera聲明:在POJ上完成的習(xí)題將不會計(jì)入Coursera的最后成績。)
注意: 總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB
描述
在某個(gè)字符串(長度不超過100)中有左括號、右括號和大小寫字母;規(guī)定(與常見的算數(shù)式子一樣)任何一個(gè)左括號都從內(nèi)到外與在它右邊且距離最近的右括號匹配。寫一個(gè)程序,找到無法匹配的左括號和右括號,輸出原來字符串,并在下一行標(biāo)出不能匹配的括號。不能匹配的左括號用"$"標(biāo)注,不能匹配的右括號用"?"標(biāo)注.

輸入
輸入包括多組數(shù)據(jù),每組數(shù)據(jù)一行,包含一個(gè)字符串,只包含左右括號和大小寫字母,字符串長度不超過100
注意:cin.getline(str,100)最多只能輸入99個(gè)字符!

輸出
對每組輸出數(shù)據(jù),!!!輸出兩行,第一行包含原始輸入字符!!!,第二行由"$","?"和空格組成,"$"和"?"表示與之對應(yīng)的左括號和右括號不能匹配。

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評論 0 4
  • 早禪 禪是自留田 你隨意種, 但得看天氣收。 午禪 我以為你是神, 而你是意志薄弱的人。 夜禪 佛無一日清靜, 人...
    鋤風(fēng)少年閱讀 209評論 1 2
  • 情不知所起,一往而深。 ――《醉玲瓏》 “在下,柸中,公儀裴。敢問姑娘芳名?” “永安,卿酒酒?!?――《華胥引》...
    漠漠水田飛白鷺閱讀 1,760評論 4 16
  • 在考研群跟群主聊天。 說到年齡,我問考研有時(shí)間限制嗎。 他說:沒有啊,好像40歲之前都可以。你別擔(dān)心,我們班還有個(gè)...
    余漁與魚閱讀 134評論 0 0

友情鏈接更多精彩內(nèi)容