!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++)
    {
        //先判断照片里有没有a
        int 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两边是非字的(即要么是空格要么是除了大小写字母和数字和下划线)就替换成A
			res=res.replaceAll("\\bcould you\\b","B");
			res=res.replaceAll("\\b(I|me)\\b","C");//如果是独立的I或者me就替换成C
			res=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;
    }
}









![[附源码]Nodejs计算机毕业设计基于的仓库管理系统Express(程序+LW)](https://img-blog.csdnimg.cn/feeef451e0254f3d80283edf7f586dbc.png)








