[编程题] 1.单词接龙
拉姆刚开始学习英文单词,对单词排序很感兴趣。
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?
输入描述:
输入包含多组测试数据。
对于每组测试数据,第一行为一个正整数n,代表有n个单词。
然后有n个字符串,代表n个单词。
保证:
2<=n<=200,每个单词长度大于1且小于等于10,且所有单词都是由小写字母组成。
输出描述:
对于每组数据,输出"Yes"或"No"
输入例子:
3 abc cdefg ghijkl 4 abc cdef fghijk xyz
输出例子:
Yes No
AC代码:
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 5 using namespace std; 6 7 vector<string> str; 8 int n; 9 10 11 int main() 12 { 13 while (cin>>n) 14 { 15 bool flag = true; 16 for (int i = 0; i < n; i++) 17 { 18 string temp; 19 cin >> temp; 20 21 str.push_back(temp); 22 } 23 for (int i = 0; i < n - 1; i++) 24 { 25 if (str[i].back() != str[i + 1].front()) 26 { 27 cout << "No"<<endl; 28 flag = false; 29 break; 30 } 31 } 32 33 if (flag) 34 cout << "Yes"<<endl; 35 } 36 return 0; 37 }
2.在计算机中,页式虚拟存储器实现的一个难点是设计页面调度(置换)算法。其中一种实现方式是FIFO算法。
FIFO算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。
假设Cache的大小为2,有5个页面请求,分别为 2 1 2 3 1,则Cache的状态转换为:(2)->(2,1)->(2,1)->(1,3)->(1,3),其中第1,2,4次缺页,总缺页次数为3。
现在给出Cache的大小n和m个页面请求,请算出缺页数。
输入描述:
输入包含多组测试数据。 对于每组测试数据,第一行两个整数n,m。 然后有m个整数,代表请求页编号。 保证: 2<=n<=20,1<=m<=100,1<=页编号<=200.
输出描述:
对于每组数据,输出一个整数,代表缺页数
输入例子:
2 5 2 1 2 3 1
输出例子:
3
AC代码:
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 bool find(vector<int> &cache, int page) 5 { 6 for (int p : cache) 7 { 8 if (p == page) 9 return true; 10 } 11 return false; 12 } 13 14 int main() 15 { 16 int n, m,page,res; 17 while (cin >> n >> m) 18 { 19 res = 0; 20 vector<int> cache; 21 for (int i = 0; i < m; i++) 22 { 23 cin >> page; 24 if (!find(cache, page)) 25 { 26 res++; 27 if (cache.size() >= n) 28 cache.erase(cache.begin()); 29 cache.push_back(page); 30 } 31 } 32 cout << res << endl; 33 } 34 return 0; 35 }