ACM PKU 1147 Binary codes http://acm.pku.edu.cn/JudgeOnline/problem?id=1147
研究了n久,原来是题意理解有问题.,, 这题费了我一个半小时,网上也找不到任何代码和算法,确实是经典啊~~
#include <iostream> using namespace std; int destination[3001]; int next[3001]; bool flag[3001]; int ans[3001]; int main() { int n, i = 1,j=1; int zero = 0 , one = 0; cin >> n; for ( ; i <= n; i++) { cin >> destination[i]; if(destination[i] == 0) zero++; else one++; } memset(flag,1,sizeof(flag)); for(i = 1;i <= zero;ans[i++] = 0); for( ;i <= n ;ans[i++] = 1); for(i = 1; i <= n; i++) { j = 1; while(ans[i] != destination[j] || flag[j] == 0 ) j++; next[i] = j; flag[j] = 0; } j = 1; for( i = 1 ; i <= n; i++) { j = next[j]; cout<<destination[j]<<" "; } cout<<endl; return 0; } 看了流牛师兄的分析写的,就这样好奉献了一次RE,很不应该啊! |