51有问题,求大佬讲解

P1166 打保龄球

@[williamllk](/user/112521) 就是您第一行输出的东西比答案输出的长
by FCB_Yiyang2006✈ @ 2020-04-11 21:20:20


输出超限
by FCB_Yiyang2006✈ @ 2020-04-11 21:21:18


@[Yiyang2006](/user/149301) 那这有什么修改的方法吗?
by williamllk @ 2020-04-11 21:32:47


@[williamllk](/user/112521) 康康您代码吧
by FCB_Yiyang2006✈ @ 2020-04-11 21:33:46


[打保龄球](https://www.luogu.com.cn/problemnew/solution/P1166) 我这道题错了三个点,都是这个原因,能不能帮我看下是为什么? ```cpp #include<bits/stdc++.h> using namespace std; string com[13]; int a[11],b[11]; int t,score=0; int f(char c){ if(c=='/') return 10; else return int(c)-int('0'); } int fs(int i){ string st=com[i],st2=com[min(i+1,t)],st3=com[min(i+2,t)]; int ans; if(st[0]!='/'&&st[1]!='/') a[i]=f(st[0])+f(st[1]); else{ if(st[0]=='/'){ if(st2[0]=='/'&&st2.size()==1) a[i]=20+f(st3[0]); else a[i]=10+min(10,f(st2[0])+f(st2[1])); } else a[i]=10+f(st2[0]); } //a[i]=ans; return a[i]; } int main(){ for(t=1;t<=10;t++) cin>>com[t]; if(com[10][0]=='/'){ cin>>com[11]; t++; if(com[11].size()==1){ cin>>com[12]; t++; } } else if(com[10].size()>1) if(com[10][1]='/') cin>>com[11]; for(int i=1;i<=10;i++){ score += fs(i); b[i]=score; } for(int i=1;i<=10;i++) cout<<a[i]<<" "; cout<<endl; for(int i=1;i<=10;i++) cout<<b[i]<<" "; return 0; } ```
by williamllk @ 2020-04-11 21:33:52


我刚好像链接给错了,重新发一个 [准确地址-打保龄球](https://www.luogu.com.cn/problem/P1166)
by williamllk @ 2020-04-11 21:36:44


@[williamllk](/user/112521) 您输出那个循环i不一定小于10吧
by FCB_Yiyang2006✈ @ 2020-04-11 21:37:50


应该就是这问题
by FCB_Yiyang2006✈ @ 2020-04-11 21:41:20


@[Yiyang2006](/user/149301) 我刚刚也仔细看了下题,确实不一定输出十个。但我现在也不知道怎么去判断这个是不是可以算出?
by williamllk @ 2020-04-11 21:42:09


@[Yiyang2006](/user/149301) 因为之前我做的题更这个差不多,不过只要输出最后的那个和就行了,但这上面好像多了些问题
by williamllk @ 2020-04-11 21:42:53


| 下一页