本文主要是介绍L1-064 估值一亿的AI核心代码 (20 分) L2-029 特立独行的幸福 (25 分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
虽然这个问题很那啥,我还是需要提一下,使用的容器如果需要遍历不要忘记清空一下,或者直接在循环内声明!!!
估值一亿的代码
——字符串处理的学习还是由很远的路要走啊
该题有几个要求,我们需要分步进行。
这里我们首先讲大小写和?与!的问题解决一下。
还用一个点就是,标点前面可能没有空格,我们需要手动给添加一下,防止切割出现错误。
这个应该是比较好实现的。
然后我们再将其他的进行替换:
核心代码:
该段代码的意思是将temp字符串根据空格分隔。
形成s1二维字符串数组。
string s1[1007],tmp;int ssindex=0;stringstream ss(temp);while(ss>>tmp){s1[ssindex++]=tmp;}
形成了字符串后,我们就可以进行替换了。
还有一个需要注意的地方就是输出的
AI:后面是有一个空格的。这里需要特殊判断一下。
因为默认下。标点符号的前面是不能有空格的,但是如果标点在第一个的话,他是必须加空格的。所以这里需要判断一下,第一个是不是标点。如果是的话,先输出一个空格。因为后面的输出都是没有空格的。
然后我们输单词的时候只需要在前面加上一个空格就ok了。因为单词前是必须有空格的。
具体代码如下:
#include <bits/stdc++.h>
using namespace std;
int n, m;int main(){cin>>n;getchar();string a[n];for(int i =0;i<n;i++){getline(cin,a[i]);}for(int i =0;i<n;i++){string temp = a[i];cout<<temp<<endl<<"AI:";for(int j = 0;j<temp.length();j++){if(temp[j]=='?')temp[j]='!';if(isalnum(temp[j])){if(temp[j]!='I')temp[j]=tolower(temp[j]);}else{temp.insert(j," ");j++;} }string s1[1007],tmp;int ssindex=0;stringstream ss(temp);while(ss>>tmp){s1[ssindex++]=tmp;}if(!isalnum(s1[0][0])){cout<<" ";}for(int i =0;i<ssindex;i++){//cout<<s1[i]<<endl;if(!isalnum(s1[i][0])){cout<<s1[i];}else if(s1[i]=="could"&&s1[i+1]=="you"){cout<<" I could";i++;}else if(s1[i]=="can"&&s1[i+1]=="you"){cout<<" I can";i++;}else if(s1[i]=="I"||s1[i]=="me"){cout<<" you";}elsecout<<" "<<s1[i];}cout<<endl;}return 0;
}
思路来自:L1-8 估值一亿的AI核心代码 (20分)坑点分析+代码
特立独行的幸福
该题的意思就是找到不被经过的数,并且这个数的循环不能有死循环。
并且当该数为素数的时候值翻倍。并且,出现的被依附的不在范围内的不进行考虑。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
#include <string>
#include <cmath>
#define MAXN 100007
typedef long long ll;using namespace std;
//vis用来记录不是幸福
//ch 用来判断循环
//xin用来输出
//ci用来记录遍历次数
int a,b, visit[MAXN],ch[MAXN],ci=0,xin[MAXN];bool isprime(int x)
{int sum=0;for(int i=2;i<=sqrt(x+1);i++){if(x%i==0) return false;}return true;
}int main(){memset(visit,0,sizeof(visit));memset(xin,0,sizeof(xin));cin>>a>>b;for(int i =a;i<=b;i++){if(visit[i]) continue;int val = i,ci=0;int sum=0;memset(ch,0,sizeof(ch));while(1){sum=0;while(val){sum+=(val%10)*(val%10);val/=10;}//这里是记录经过的数,这些数都不是幸福if(sum<=b&&sum>=a) visit[sum]=1;//判断是否有死循环 退出if(ch[sum]){visit[i]=1;break;}val=sum;ci++;ch[sum]=1;// 出现条件时退出if(sum==1){xin[i]=ci;if(isprime(i)) xin[i]*=2;break;}}}int flag=0;for(int i =a;i<=b;i++){if(visit[i]==0&&xin[i]>0){cout<<i<<" "<<xin[i]<<endl;flag++;}}if(flag==0) cout<<"SAD"<<endl;return 0;
}
思路来自:
L2-1 特立独行的幸福 (25 分)
这篇关于L1-064 估值一亿的AI核心代码 (20 分) L2-029 特立独行的幸福 (25 分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!