AOJ_0108 Operation of Frequency of Appearance
問題
解法
問題文にかかれている通りにやるだけ。
#include <cstdio> #include <algorithm> using namespace std; const int MAX_N = 12; int S[MAX_N], T[MAX_N], N; int main(){ while(scanf("%d", &N) &&N){ int ans; for(int i = 0; i < N; i++) scanf("%d", &S[i]); for(ans = 0;;ans++){ bool f = true; for(int i = 0; i < N; i++){ int sum = 0; int t = S[i]; for(int j = 0; j < N; j++){ if(S[j] == t) sum++; } T[i] = sum; f = f && (T[i] == S[i]); } if(f) break; for(int i = 0; i < N; i++) S[i] = T[i]; } printf("%d\n", ans); for(int i = 0; i < N; i++){ if(i == N-1) printf("%d\n", S[i]); else printf("%d ", S[i]); } } return 0; }