本蒟蒻闲来无事刷刷水题
话说这道题,看楼下的大佬们基本都是用字符 ( char ) 来做的,那么我来介绍一下C++的优势:
string !
string,也就是类型串,是C语言没有的,使用十分方便
我来介绍一下string的用法:
1.定义
string 字符串名;
2.输入
它有 2 种输入方式:
① getline :使用方法:
getline(cin,字符串名);
② cin:使用方法:
cin>>字符串名;
很简单吧?
3.测串长
①
串长=字符串名.size();
②
串长=字符串名.length();
请记住,字符串的首位为0!
4.成员函数
在这里我先不讲,如果有兴趣可以去我的博客浏览 ( 现在还没写好 )
而且,这里 n ≤ 100000,所以我拿出了我的绝招
快读!
相信做这题的大佬们一定知道快读吧!
快读,从字面上来理解就是____。
答案:快速读入
我们都知道,读入一个字符比读入一个整数要快得多。
那么这就好办了!我们又知道,每一个字符都有它自己的ASCII码,那么,我们是不是只要将输入的字符减去字符0的ASCII码48就可以了呢?
当然是这样。
下面放出快读的代码,有注释,不懂的还可以问问老师和同学。
int read(){//快读,read int r=0,f=1;//r为计数器,f为标志,看是整数还是负数 char c=getchar();//读入c while((c<'0'||c>'9')&&c!='-')//读入非数字、负号的字符 c=getchar(); if(c=='-')//特判c,若c为负号则f置-1,即为负数 f=-1,c=getchar(); while(c<='9'&&c>='0')//正式读入数字 r=r*10+c-'0',c=getchar();//r由c-0的ASCII码组成 return r*f;//若f为1则为负数,f为-1则为负数 }
挺简单吧?
那整体来说就是这些知识点了,望大家好好阅读理解
下面放出我的代码:
#include<iostream> using namespace std;//本蒟蒻总喜欢写这个 string s;//字符串 int n,anton,danik,len,i;//anton为Anton胜的场数,danik同理 int read(){//快读来辣 int r=0,f=1; char c=getchar(); while((c<'0'||c>'9')&&c!='-') c=getchar(); if(c=='-') f=-1,c=getchar(); while(c<='9'&&c>='0') r=r*10+c-'0',c=getchar(); return r*f; } int main(){ n=read();//快读的读入方式,get一下 cin>>s;//我用的cin,getline也可以 len=s.size();//测串长辣! for(i=0;i<len;i++){//字符串的首位为0 if(s[i]=='A')//Anton胜了的话 anton++; else//反正不是A就是D(这里是Danik胜了的情况) danik++; } if(anton==danik)//这一段纯粹按照题意编写,大佬们都知道吧 printf("Friendship"); if(anton<danik) printf("Danik"); if(anton>danik) printf("Anton"); return 0; }