赞
踩
这个题还是挺考验 函数合理运用 和 数据模拟处理能力 的
思路:
- 因为可能出现-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);
- }
- }
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);
- }
- }
- }
- #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;
- }
- }
- #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;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。