C++基于棧實(shí)現(xiàn)鐵軌問題
更新時(shí)間:2015年04月20日 11:55:25 作者:司青
這篇文章主要介紹了C++基于棧實(shí)現(xiàn)鐵軌問題,實(shí)例分析了C++使用棧實(shí)現(xiàn)鐵軌問題的思路與解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C++基于棧實(shí)現(xiàn)鐵軌問題。分享給大家供大家參考。具體分析如下:
示例圖如下所示:

經(jīng)典棧問題!第一次做的時(shí)候思路太混亂了,現(xiàn)在看了劉汝佳的書,重新整理下。
#include <stdio.h>
#include <string.h>
/******************************************************************
* 用數(shù)組A存儲(chǔ)調(diào)整前的車廂號(hào)序列,用數(shù)組B存儲(chǔ)調(diào)整好的車廂號(hào)序列
* 用棧stack存儲(chǔ)存放在中轉(zhuǎn)站C中的車廂
* 用ix_A指向A中最前面的車廂,用ix_B指向B中最前面的車廂
*
* 如果ix_B已經(jīng)指向了\0,則說明所有車廂已經(jīng)按指定次序出站,否則
* 如果ix_B指向的車廂等于ix_A指向的車廂,則直接把ix_A開到B,否則
* 如果ix_B指向的車廂等于stack中的棧元素,則把棧頂車廂開出,否則
* 如果此時(shí)A中還有車廂,則把A開入中轉(zhuǎn)站C中,否則
* 輸出無解。
*******************************************************************/
char stack[1010];
char A[1010];
char B[1010];
int main(int argc, char *argv[])
{
scanf("%s%s",A,B);
int len_a = strlen(A);
int len_b = strlen(B);
/* 初始化棧 */
int top = -1;
int tot = 0;
int ix_a = 0;
int ix_b = 0;
while(1)
{
if(A[ix_a] == B[ix_b])
{
printf("in\n");
printf("out\n");
++ix_b;
++ix_a;
if(ix_b == len_b) /* 車已經(jīng)全出去了,操作成功 */
break;
}
else if(tot != 0 /* 先檢查棧是否為空 */ && B[ix_b] == stack[top])
{
printf("out\n");
--tot;
--top;
++ix_b;
if(ix_b == len_b)
break;
}
else if(ix_a != len_a)
{
printf("in\n");
++tot;
++top;
stack[top] = A[ix_a];
++ix_a;
if(ix_b == len_b)
break;
}
else
{
printf("無解!\n");
return 0;
}
}
printf("完成!\n");
return 0;
}
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C語言使用posix正則表達(dá)式庫的實(shí)現(xiàn)
在C語言中,你可以使用 POSIX 正則表達(dá)式庫(regex.h)來進(jìn)行正則表達(dá)式的模式匹配,本文主要介紹了C語言使用posix正則表達(dá)式庫的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)銀行模擬的相關(guān)資料,通過此文希望大家能理解離散化的方法,希望能幫助到大家,需要的朋友可以參考下2017-08-08
基于C++實(shí)現(xiàn)BMI身體質(zhì)量指數(shù)計(jì)算工具
BMI(Body?Mass?Index,身體質(zhì)量指數(shù)),也稱為體重指數(shù),是一種常用的衡量成人人體肥胖程度的指標(biāo),本文就來用C++編寫一個(gè)簡(jiǎn)單的BMI計(jì)算工具吧2023-10-10
C語言中#define在多行宏定義出錯(cuò)的原因及分析
這篇文章主要介紹了C語言中#define在多行宏定義出錯(cuò)的原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
教你在VS2022?MFC程序中調(diào)用CUDA代碼的方法
這篇文章主要介紹了在VS2022?MFC程序中調(diào)用CUDA代碼,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04

