EOJ 3040:非重復二進制串
阿新 • • 發佈:2019-03-05
第一個 def typedef div emp for ack 二進制 num
占坑:
#include <bits/stdc++.h> using namespace std; typedef long long ll; int T, cnt; stack<int> myStack; int a[100]; void getBinary(ll num) { while(num) { myStack.push(num%2); num/=2; } } int main() { cin>>T; while(T--){ ll num; cin>>num; getBinary(num); int l=0; while(!myStack.empty()){ a[l++]=myStack.top(); myStack.pop(); } int len=1; int maxi=len; for(int i=1;i<l;++i){ if(a[i]!=a[i-1]) len++; else {if(a[i]==0) { len=0; continue; } else len=1; } if(maxi<len) maxi=len;//after every loop, if true, we update maxi } printf("case #%d:\n",cnt++); cout<<maxi<<endl; }return 0; }
之前的錯誤(邏輯錯誤):第二個if和下面的else 構成了邏輯並列關系 應該是第一個if和else 構成邏輯並列關系
for(int i=1;i<l;++i){ if(a[i]!=a[i-1]) len++; if(maxi<len) maxi=len; else { if(a[i]==0) { len=0; continue; } else len=1; } }
EOJ 3040:非重復二進制串