克拉玛依市网站建设_网站建设公司_小程序网站_seo优化
2025/12/24 15:53:20 网站建设 项目流程

2025年同济大学计算机考研复试机试真题

2025年同济大学计算机考研复试上机真题

历年同济大学计算机考研复试上机真题

历年同济大学计算机考研复试机试真题

更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream

N 诺 DreamJudge 题库:输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

TAT的个数

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

小诺有一个只包含T和A的字符串,小诺想知道这个序列中有多少个TAT?

比如:TATT中包含了2个不同位置的TAT,TAATT中包含了4个不同位置的TAT。

输入输出格式
输入描述:

多组数据输入。 输入一行字符串,字符串长度小于100000。

输出描述:

输出答案。

输入输出样例
输入样例#:
TATT
输出样例#:
2

代码一

  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5. int main() {
  6. string s;
  7. while (cin >> s) {
  8. int n = s.length();
  9. vector<long long> leftT(n, 0);
  10. vector<long long> rightT(n, 0);
  11. leftT[0] = (s[0] == 'T') ? 1 : 0;
  12. for (int i = 1; i < n; i++) {
  13. leftT[i] = leftT[i-1] + (s[i] == 'T' ? 1 : 0);
  14. }
  15. rightT[n-1] = (s[n-1] == 'T') ? 1 : 0;
  16. for (int i = n-2; i >= 0; i--) {
  17. rightT[i] = rightT[i+1] + (s[i] == 'T' ? 1 : 0);
  18. }
  19. long long ans = 0;
  20. for (int i = 0; i < n; i++) {
  21. if (s[i] == 'A') {
  22. ans += leftT[i] * rightT[i];
  23. }
  24. }
  25. cout << ans << endl;
  26. }
  27. return 0;
  28. }

代码二

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. string s;
  5. while(cin>>s){
  6. int t=0;//总的t的个数
  7. int lt=0;//左边t的数量
  8. int len=s.size();
  9. long long ans=0;
  10. for(int i=0;i<len;i++){
  11. if(s[i]=='T'){
  12. t++;
  13. }
  14. }
  15. for(int i=0;i<len;i++){
  16. if(s[i]=='T'){
  17. lt++;
  18. }
  19. if(s[i]=='A'){
  20. ans+=lt*(t-lt);
  21. }
  22. }
  23. cout<<ans<<endl;
  24. }
  25. return 0;
  26. }

代码三

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. string s;
  5. while (cin >> s) {
  6. if (s.size() == 0)
  7. continue;
  8. long long count = 0, len = s.size();
  9. vector<int>T_num(len);
  10. T_num[0] = s[0] == 'T' ? 1 : 0;
  11. for (int i = 1; i < len; i++) {
  12. if (s[i] == 'T')
  13. T_num[i] = T_num[i - 1] + 1;
  14. else
  15. T_num[i] = T_num[i - 1];
  16. }
  17. for (int i = 0; i < len; i++)
  18. if (s[i] == 'A')
  19. count += T_num[i] * (T_num[len - 1] - T_num[i]);
  20. cout << count << endl;
  21. }
  22. return 0;
  23. }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询