2 条题解
-
4
这道题如果不用链表写请务必注意边界,以下是错误示范:
#include <bits/stdc++.h> using namespace std; int n,maxn=0; char a[351]; int main() { cin>>n>>a; for (int i=0;i<n;i++){ int j=i-1:n-1,lsum1=0,rsum1=0,lsum2=0,rsum2=0;//这里有亿点问题 while (a[j]!='r' && j!=i){ lsum1++; j--; if (j<0){ j=n-1; } } j=i; while (a[j]!='r' && j!=((i!=0)?i-1:n-1)){ rsum1++; j++; if (j>n-1){ j=0; } } j=i!=0?i-1:n-1; while (a[j]!='b' && j!=i){ lsum2++; j--; if (j<0){ j=n-1; } } j=i; while (a[j]!='b' && j!=((i!=0)?i-1:n-1)){ rsum2++; j++; if (j>n-1){ j=0; } } maxn=max(max(lsum1,lsum2)+max(rsum1,rsum2),maxn); } cout<<min(maxn,n); }
-
0
比较菜,多指教
#include <iostream> using namespace std; char s[710];//存放项链 int n=0;//项链长度 int dtmcol(char c)//判断颜色 { if(c=='b') return 1; else return 2; } int main() { int ans=0; cin>>n>>s;//输入项链长度和项链 for(int i=0;i<n;i++) s[i+n]=s[i];//将项链变为2*n长度来处理环 for(int i=0;i<n;i++) { int l=i,r=i+n-1; int cnt=0,left=0,right=0;//cnt==count while(l<=r&& (s[l]=='w'||(left|dtmcol(s[l]))!=3))//向左枚举 { if(s[l]!='w') left|=dtmcol(s[l]); cnt++,l++; } while(l<=r&& (s[r]=='w'||(right|dtmcol(s[r]))!=3))//向右枚举 { if(s[l]!='w') right|=dtmcol(s[r]); cnt++,r--; } ans=ans>cnt?ans:cnt;//比较大小 } cout<<ans;//输出答案 return 0; }
- 1
信息
- ID
- 6
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 48
- 已通过
- 8
- 上传者