JUST KIDDING 0001 指鹿为马排序

时间复杂度 O(n);

聚集一幫人並向他們展示數組。詢問他們這個數組是否是排序好的。
幹掉其中認為沒有排序號的人,重複幾次,
直到所有人都同意這個數組是排序好的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是加上注释后的代码: ```c++ #include<iostream> #include<stack> #include<string> #include<queue> using namespace std; int main() { // 定义两个字符串和一个栈和一个队列 string str1, str2; stack<char> s; queue<string> print; int i, j; j = 0; // 输入两个字符串 cin >> str1 >> str2; // 遍历第一个字符串 for (i = 0; i < str1.size(); i++) { if (str1[i] == str2[j]) { // 如果第一个字符串的当前字符和第二个字符串的当前字符相同 print.push("1->2"); // 将 "1->2" 压入队列 j++; // 移动第二个字符串的指针 } else if (!s.empty() && s.top() == str2[j]) { // 如果栈不为空,且栈顶元素和第二个字符串的当前字符相同 s.pop(); // 弹出栈顶元素 print.push("3->2"); // 将 "3->2" 压入队列 j++; // 移动第二个字符串的指针 i--; // 回退第一个字符串的指针 } else { // 如果第一个字符串的当前字符和第二个字符串的当前字符不同 s.push(str1[i]); // 将第一个字符串的当前字符压入栈 print.push("1->3"); // 将 "1->3" 压入队列 } } // 处理栈中剩余元素 while (!s.empty() && s.top() == str2[j] && j < str2.size()) { s.pop(); // 弹出栈顶元素 print.push("3->2"); // 将 "3->2" 压入队列 j++; // 移动第二个字符串的指针 } // 判断栈是否为空 if (!s.empty() && s.top() != str2[j]) { cout << "Are you kidding me?" << endl; // 如果栈不为空且栈顶元素和第二个字符串的当前字符不同,输出 "Are you kidding me?" return 0; } else { // 如果栈为空或者栈顶元素和第二个字符串的当前字符相同 while (!print.empty()) { // 输出队列中的操作序列 cout << print.front() << endl; print.pop(); } return 0; } } ``` 希望这份注释能够帮助您理解这段代码的含义。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值