admin管理员组

文章数量:1122850

【PTA

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

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

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

思路:

  • 因为可能出现-0这种输入 所以不能是int型 stoi() 将字符串转化为整数
  • 先把每张照片的人 按照片编号储存
  • 因为题目只要求找a和b相关亲密度高的异性 所以和a b都没关系的人可以不用存
  • 建立数组love分别存a b和各异性的亲密度 并找出各自亲密度最高的人
  • bool ck函数负责判断b是不是a最亲密的人
#include <bits/stdc++.h>
using namespace std;const int N=1100;
bool sex[N]; //true女 false男
vector<int> p[N];//p[i][]表示第i张照片 后面表示人
int n,m,k;void print(int a,int b)
{if(sex[a]) cout<<"-";cout<<a<<" ";if(sex[b]) cout<<"-";cout<<b<<endl;
}void pr(int a,int idx,double l[])
{for(int i=0;i<n;i++)if(l[idx]==l[i]) print(a,i);
}//找a亲密度最高的异性 返回值为判断b是否为a亲密度最高的人
bool ck(int a,int b,int &idx,double l[])
{//从每一张照片开始找起for(int i=0;i<m;i++){//先判断照片里有没有aint len=p[i].size();int j;for(j=0;j<len;j++) if(p[i][j]==a) break;if(j>=len) continue; //如果这张照片没有a 则下一张for(int j=0;j<len;j++) if(sex[p[i][j]]^sex[a]) l[p[i][j]]+=1.0/len;}double maxx=-1;for(int i=0;i<n;i++)if(maxx<l[i]){maxx=l[i];idx=i;}return l[idx]==l[b];
}int main()
{cin>>n>>m;//因为会出现-0的情况 所以只能用string 将字符串转化为整数string s;for(int i=0;i<m;i++){cin>>k;for(int j=0;j<k;j++){cin>>s;int x=abs(stoi(s));if(s[0]=='-') sex[x]=true;p[i].push_back(x);}}int a,b;cin>>s;a=abs(stoi(s));if(s[0]=='-') sex[a]=true;cin>>s;b=abs(stoi(s));if(s[0]=='-') sex[b]=true;double la[N]={0},lb[N]={0}; //la存a和异性的亲密度 lb存b和异性亲密度int idxa,idxb; //idxa记录a最亲密的人的编号 idxb记录b最亲密的人的编号bool love1=ck(a,b,idxa,la);bool love2=ck(b,a,idxb,lb);if(love1&&love2) print(a,b);else{pr(a,idxa,la);pr(b,idxb,lb);}
}

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

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

java正则表达式

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

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

L1-062 幸运彩票 - 15

#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;string s;while(n--){int s1=0,s2=0,cnt=0;cin>>s;string str1=s.substr(0,3);string str2=s.substr(3);while(cnt<3){s1+=(str1[cnt++]-'0');}cnt=0;while(cnt<3){s2+=(str2[cnt++]-'0');}if(s1==s2) cout<<"You are lucky!"<<endl;else cout<<"Wish you good luck."<<endl;}
}

L1-063 吃鱼还是吃肉 - 10

#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;while(n--){int sex,h,w;cin>>sex>>h>>w;if(sex==0){if(h==129) cout<<"wan mei! ";else if(h>129) cout<<"ni li hai! ";else cout<<"duo chi yu! ";if(w==25) cout<<"wan mei!";else if(w>25) cout<<"shao chi rou!";else cout<<"duo chi rou!";}else{if(h==130) cout<<"wan mei! ";else if(h>130) cout<<"ni li hai! ";else cout<<"duo chi yu! ";if(w==27) cout<<"wan mei!";else if(w>27) cout<<"shao chi rou!";else cout<<"duo chi rou!";}cout<<endl;}
}

本文标签: PTA