1.学习总结
2.PTA实验作业
题目1:jmu-字符串是否对称
1设计思路
for i = 1 to 字符串str结束if 栈顶元素 != str[i] 字符串不对称输出noendfor字符串对称输出yes
2代码截图
3PTA提交列表说明
前面几处错误都是因为输入用的是getchar(),后来改用gets就对了好像是因为这题输入不是以\n做结尾的
题目2 : 银行业务队列简单模拟
1设计思路
定义栈odd存放偶数,even存放奇数for i = 1 to n输入编号x奇数push到even,偶数push到oddendforwhile(odd&&even均不为空)输出两个even元素再输出一个odd内元素输出even和odd栈内剩余元素
2代码截图
3PTA提交列表说明
答案错误是因为输出格式错误
题目 3: 银行排队问题之单队列多窗口服务
1设计思路
for i = 1 to 总人数nfor j = 1 to 总柜台数kif 顾客来的时间cus[i].cometime > 柜台结束服务的时间win[j]柜台结束时间win[j] = 顾客完成业务时间if 柜台完成服务时间win[j] >最快完成柜台时间fast标记单前柜台为最快完成柜台endfor if 顾客来的时间cus[i].cometime < 柜台结束服务的时间win[j]让该顾客去最快完成时间办理业务endfor输出题目需要值
2代码截图
3 PTA提交列表说明
这题有一个答案错误是因为顾客来的比窗口结束服务时间早的情况考虑错误
3.截图本周题目集的PTA最后排名
1.栈PTA排名
2. 队列PTA排名
3. 我的总分:
123+111 = 234
4. 阅读代码
#include<bits/stdc++.h> using namespace std; // 按下标定义余数的输出字符
const char rep[] = "0123456789ABCDEF"; int main()
{ int n,x; while(~scanf("%d %d", &x, &n)) { stack<int> st; while(x) { st.push(x % n); // 余数入栈 x /= n; // 整除 } while(!st.empty()) { int tp = st.top(); st.pop(); putchar(rep[tp]); // 按照对应的样式输出余数 } puts(""); } return 0;
}
题目:ip地址转换
这一题以前也做过,用的是数组储存,把ip地址转化为二进制需要逆置最后的余数,这和栈先进后出的特点相符合,所以这题要是用栈来做会更加简单一点
可以免除数组倒续输出的过程