当前位置:   article > 正文

【PTA-训练day16】L2-028 秀恩爱分得快 + L1-064 估值一亿的AI核心代码_秀恩爱分得快程序设计

秀恩爱分得快程序设计

!L2-028 秀恩爱分得快 - 分块大模拟

PTA | 程序设计类实验辅助教学平台

这个题还是挺考验 函数合理运用 和 数据模拟处理能力 的

思路:

  • 因为可能出现-0这种输入 所以不能是int型 stoi() 将字符串转化为整数
  • 先把每张照片的人 按照片编号储存
  • 因为题目只要求找a和b相关亲密度高的异性 所以和a b都没关系的人可以不用存
  • 建立数组love分别存a b和各异性的亲密度 并找出各自亲密度最高的人
  • bool ck函数负责判断b是不是a最亲密的人
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=1100;
  4. bool sex[N]; //true女 false男
  5. vector<int> p[N];//p[i][]表示第i张照片 后面表示人
  6. int n,m,k;
  7. void print(int a,int b)
  8. {
  9. if(sex[a]) cout<<"-";
  10. cout<<a<<" ";
  11. if(sex[b]) cout<<"-";
  12. cout<<b<<endl;
  13. }
  14. void pr(int a,int idx,double l[])
  15. {
  16. for(int i=0;i<n;i++)
  17. if(l[idx]==l[i]) print(a,i);
  18. }
  19. //找a亲密度最高的异性 返回值为判断b是否为a亲密度最高的人
  20. bool ck(int a,int b,int &idx,double l[])
  21. {
  22. //从每一张照片开始找起
  23. for(int i=0;i<m;i++)
  24. {
  25. //先判断照片里有没有a
  26. int len=p[i].size();
  27. int j;
  28. for(j=0;j<len;j++) if(p[i][j]==a) break;
  29. if(j>=len) continue; //如果这张照片没有a 则下一张
  30. for(int j=0;j<len;j++)
  31. if(sex[p[i][j]]^sex[a]) l[p[i][j]]+=1.0/len;
  32. }
  33. double maxx=-1;
  34. for(int i=0;i<n;i++)
  35. if(maxx<l[i])
  36. {
  37. maxx=l[i];
  38. idx=i;
  39. }
  40. return l[idx]==l[b];
  41. }
  42. int main()
  43. {
  44. cin>>n>>m;
  45. //因为会出现-0的情况 所以只能用string 将字符串转化为整数
  46. string s;
  47. for(int i=0;i<m;i++)
  48. {
  49. cin>>k;
  50. for(int j=0;j<k;j++)
  51. {
  52. cin>>s;
  53. int x=abs(stoi(s));
  54. if(s[0]=='-') sex[x]=true;
  55. p[i].push_back(x);
  56. }
  57. }
  58. int a,b;
  59. cin>>s;
  60. a=abs(stoi(s));
  61. if(s[0]=='-') sex[a]=true;
  62. cin>>s;
  63. b=abs(stoi(s));
  64. if(s[0]=='-') sex[b]=true;
  65. double la[N]={0},lb[N]={0}; //la存a和异性的亲密度 lb存b和异性亲密度
  66. int idxa,idxb; //idxa记录a最亲密的人的编号 idxb记录b最亲密的人的编号
  67. bool love1=ck(a,b,idxa,la);
  68. bool love2=ck(b,a,idxb,lb);
  69. if(love1&&love2) print(a,b);
  70. else
  71. {
  72. pr(a,idxa,la);
  73. pr(b,idxb,lb);
  74. }
  75. }

L1-064 估值一亿的AI核心代码 - 20 - java 正则表达式

PTA | 程序设计类实验辅助教学平台

java正则表达式

L1-064 估值一亿的AI核心代码 (20分)(Java正则表达式)_信小颜的博客-CSDN博客_cstr=cstr.trim();

  1. import java.util.Scanner;
  2. public class Main
  3. {
  4. public static void main(String[] args)
  5. {
  6. Scanner sc=new Scanner(System.in);
  7. String s;
  8. int n=sc.nextInt();
  9. String t=sc.nextLine();
  10. while(n-->0)
  11. {
  12. String res="";
  13. s=sc.nextLine();
  14. System.out.println(s);
  15. for(char c:s.toCharArray())//所有大写英文字母变成小写,除了I
  16. {
  17. if(c>='A'&&c<='Z'&&c!='I')
  18. c+=32;
  19. res+=c;
  20. }
  21. res=res.trim(); //去掉首尾多余空格
  22. res=res.replaceAll(" +"," "); //" +"表示一个或多个空格替换成一个空格
  23. res=res.replaceAll(" (\\W)","$1"); //去掉标点符号前面的空格。标点符号默认为除了大小写英文字母和数字和下划线之外的符号。\W就是与任何非单词字符匹配
  24. res=res.replaceAll("\\?","!"); //将所有?替换为!
  25. res=res.replaceAll("\\bcan you\\b","A");//如果can you两边是非字的(即要么是空格要么是除了大小写字母和数字和下划线)就替换成A
  26. res=res.replaceAll("\\bcould you\\b","B");
  27. res=res.replaceAll("\\b(I|me)\\b","C");//如果是独立的I或者me就替换成C
  28. res=res.replaceAll("A","I can");
  29. res=res.replaceAll("B","I could");
  30. res=res.replaceAll("C","you");
  31. System.out.println("AI: "+res);
  32. }
  33. }
  34. }

L1-062 幸运彩票 - 15

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. cin>>n;
  7. string s;
  8. while(n--)
  9. {
  10. int s1=0,s2=0,cnt=0;
  11. cin>>s;
  12. string str1=s.substr(0,3);
  13. string str2=s.substr(3);
  14. while(cnt<3)
  15. {
  16. s1+=(str1[cnt++]-'0');
  17. }
  18. cnt=0;
  19. while(cnt<3)
  20. {
  21. s2+=(str2[cnt++]-'0');
  22. }
  23. if(s1==s2) cout<<"You are lucky!"<<endl;
  24. else cout<<"Wish you good luck."<<endl;
  25. }
  26. }

L1-063 吃鱼还是吃肉 - 10

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. cin>>n;
  7. while(n--)
  8. {
  9. int sex,h,w;
  10. cin>>sex>>h>>w;
  11. if(sex==0)
  12. {
  13. if(h==129) cout<<"wan mei! ";
  14. else if(h>129) cout<<"ni li hai! ";
  15. else cout<<"duo chi yu! ";
  16. if(w==25) cout<<"wan mei!";
  17. else if(w>25) cout<<"shao chi rou!";
  18. else cout<<"duo chi rou!";
  19. }else
  20. {
  21. if(h==130) cout<<"wan mei! ";
  22. else if(h>130) cout<<"ni li hai! ";
  23. else cout<<"duo chi yu! ";
  24. if(w==27) cout<<"wan mei!";
  25. else if(w>27) cout<<"shao chi rou!";
  26. else cout<<"duo chi rou!";
  27. }
  28. cout<<endl;
  29. }
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/446005
推荐阅读
相关标签
  

闽ICP备14008679号