2#点错了,心态炸了

P1166 打保龄球

你不贴代码怎么叫人给你改? @[mooktian](/user/890321)
by MsgNotFound @ 2024-03-06 20:24:27


@[42_TZY](/user/906900) ```cpp #include <bits/stdc++.h> #define f(i,a,b) for(int i=a;i<=b;i++) #define g(i,a,b) for(int i=a;i>=b;i--) using namespace std; int g[30];//滚球得分 char c; struct lunci { int score,aft;//score分数,aft后续滚球能得分的次数 }a[30]; int sum[30];//累计和 void addaft(int j,int i) { for(int k = max(1,j - 2);k < j;k++) { if(a[k].aft > 0) a[k].score += g[i],a[k].aft--; } } int main(){ int cnt = 1,cnt2 = 0;//cnt2每轮滚球可能有两次,cnt滚球次数 while(cin >> c) { if(c == '/') { if(cnt2 == 1) { g[cnt] = 10 - g[cnt-1]; cnt2 = 0; }else { g[cnt] = 10; } }else { if(cnt2 == 0) { cnt2++; g[cnt] = c - '0'; }else { g[cnt] = c - '0'; cnt2 = 0; } } cnt++; } cnt--; //for(int i = 1;i <= cnt;i++) cout << g[i] <<" "; //cout <<"\n"; int j = 1,i = 1;//记录轮次 while(j <= 12 && i <= cnt) { if(g[i] == 10) a[j].score = g[i],a[j].aft = 2,addaft(j,i),i++,j++; if(g[i] < 10) { if(i < cnt) { a[j].score = g[i] + g[i+1]; if(a[j].score < 10) a[j].aft = 0; else a[j].aft = 1; addaft(j,i); addaft(j,i+1); i += 2; j++;}else { a[j].score = g[i],a[j].aft = 2,addaft(j,i),i++; } } } while(a[j].score == 0) j--; for(int k = 1;k <= j;k++) { if(a[k].aft == 0) { cout << a[k].score <<" "; sum[k] += sum[k-1] + a[k].score; } } cout <<"\n"; for(int k = 1;k <= j;k++) if(a[k].aft == 0) cout << sum[k] << " "; return 0; } ``` 马蜂不好,大佬帮看看,这题应该数据都比较简单,我就是不知道错在哪了,看不到2号点的数据
by mooktian @ 2024-03-06 23:38:21


@[42_TZY](/user/906900) ```cpp #include <bits/stdc++.h> #define f(i,a,b) for(int i=a;i<=b;i++) #define g(i,a,b) for(int i=a;i>=b;i--) using namespace std; int g[30];//滚球得分 char c; struct lunci { int score,aft;//score分数,aft后续滚球能得分的次数 }a[30]; int sum[30];//累计和 void addaft(int j,int i) { for(int k = max(1,j - 2);k < j;k++) { if(a[k].aft > 0) a[k].score += g[i],a[k].aft--; } } int main(){ int cnt = 1,cnt2 = 0;//cnt2每轮滚球可能有两次,cnt滚球次数 while(cin >> c) { if(c == '/') { if(cnt2 == 1) { g[cnt] = 10 - g[cnt-1]; cnt2 = 0; }else { g[cnt] = 10; } }else { if(cnt2 == 0) { cnt2++; g[cnt] = c - '0'; }else { g[cnt] = c - '0'; cnt2 = 0; } } cnt++; } cnt--; //for(int i = 1;i <= cnt;i++) cout << g[i] <<" "; //cout <<"\n"; int j = 1,i = 1;//记录轮次 while(j <= 12 && i <= cnt) { if(g[i] == 10) a[j].score = g[i],a[j].aft = 2,addaft(j,i),i++,j++; if(g[i] < 10) { if(i < cnt) { a[j].score = g[i] + g[i+1]; if(a[j].score < 10) a[j].aft = 0; else a[j].aft = 1; addaft(j,i); addaft(j,i+1); i += 2; j++;}else { a[j].score = g[i],a[j].aft = 2,addaft(j,i),i++; } } } while(a[j].score == 0) j--; for(int k = 1;k <= j;k++) { if(a[k].aft == 0) { cout << a[k].score <<" "; sum[k] += sum[k-1] + a[k].score; } } cout <<"\n"; for(int k = 1;k <= j;k++) if(a[k].aft == 0) cout << sum[k] << " "; return 0; } ```
by mooktian @ 2024-03-06 23:39:18


虽然AC了,懵圈中,不知道错在哪里。 ``` #include <bits/stdc++.h> #define f(i,a,b) for(int i=a;i<=b;i++) #define g(i,a,b) for(int i=a;i>=b;i--) #define ll long long using namespace std; string s[20]; struct lunci { int score,cnt,id; lunci() { score = -1,cnt = 2,id = 1; } }a[20]; int g[30],sum[20]; int main(){ int n = 1; while(cin >> s[n++]); n -= 2; int m = 1;//滚球次数 //for(int i = 1;i <= n;i++) cout << s[i] <<" "; //cout <<"\n" ; for(int i = 1;i <= n;i++) { int len = s[i].size(); if(len == 0) break;//未读入数据 if(len == 1) { if(s[i][0] == '/') { a[i].score = 10; g[m] = 10; a[i].id = m; m++; }else a[i].score = s[i][0] - '0',a[i].id = m,g[m] = s[i][0] - '0',m++;//只投了一次,没有结束,本轮没有结果 } if(len == 2) { if(s[i][1] == '/') { a[i].score = 10; a[i].cnt = 1; g[m] = s[i][0] - '0',m++; g[m] = 10 - g[m-1],m++; a[i].id = m - 1; }else { a[i].score = s[i][0] - '0' + s[i][1] - '0'; a[i].cnt = 0; g[m] = s[i][0] - '0',m++; g[m] = s[i][1] - '0',m++; } } } m--; //cout <<m << endl; //for(int i = 1;i <= n;i++) cout << a[i].score <<" "; //cout <<"\n"; for(int i = 1;i <= n;i++) { while(a[i].cnt > 0) { if(a[i].id < m) { a[i].score += g[a[i].id+1]; a[i].id++,a[i].cnt--; }else break; } } for(int i = 1;i <= n;i++) { if(a[i].cnt == 0) { cout << a[i].score <<" "; sum[i] = sum[i-1] + a[i].score; } } cout <<"\n"; for(int i = 1;i <= m;i++) { if(a[i].cnt == 0) cout <<sum[i]<<" "; } return 0; } ```
by mooktian @ 2024-03-08 18:55:55


|