一个填空题,求其编程算法。

编程来求解.要求:
1.通过运算得出正解答案
2.运算效率高.

这是一个填空题,原题如下:
在下面的这句话中:
有 _ 个1, 有 _ 个2,有 _ 个3,有 _ 个4,有 _ 个5,有 _ 个6,有 _ 个7,有 _ 个8,有 _ 个9.
注:(每个空里面只准填一位数的阿拉伯数字)

这里填空题我已在休闲版贴过答案也有,但现在要用编程来算出来,看看大家能不能找到一个比较好的算法。

小弟刚学编程没几天,胡乱想了个解法,权当抛砖引玉,希望高手可以指点一下

#include<iostream.h> const int Size = 9; void main() { bool outWhile; int i,j,temp; int a[Size+1]; for(i = 1;i <= Size;i++) a[i]=1; //将数组初始化为1 do { outWhile = true; for(i = 1;i <= Size;i++) { temp = 1; for(j = 1;j <= Size;j++) { if(a[j] == i) temp++; } if(a[i] != temp) { a[i] = temp; outWhile = false; } } }while(!outWhile); for(i = 1;i <= Size;i++) { cout<<"有"<<a[i]<<"个"<<i<<" "; } }

是用如:
1 2 3 4 5 6 7 8 9

1 1 1 1 1 1 1 1 1
10 1 1 1 1 1 1 1 1
9 1 1 1 1 1 1 1 2
8 2 1 1 1 1 1 2 1
7 3 2 1 1 1 2 1 1
6 3 2 1 1 2 1 1 1
的方式推出的

我觉得似乎与题意不符!!

我没有C++,用TC3无法编译。
算出来答案是多少?

有6个1, 有3 个2,有2个3,有1个4,有1个5,有2个6,有1个7,有1个8,有1个9