/* 第 6 题 腾讯面试题: 给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】 举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0,0 0 在下排出现了 6 次,1 在下排出现了 2 次, 2 在下排出现了 1 次,3 在下排出现了 0 次.... 以此类推.. http://blog.csdn.net/wcyoot/article/details/6428305 1)如果上排数列中有0,此时如果上排数列中无0,1,2,n-4这四个数,则下排数列无解; 否则下排数列中0出现的次数为n-4;1出现的次数为2;2出现的次数为1;n-4出现的次数为1;其余为0。 2)如果上排数列中无0,则下排数列全0,是其唯一解。 10 0 1 2 3 4 5 6 7 8 9 6 0 1 4 3 2 2 */ //未判断无解 #include<iostream> #include<stdio.h> using namespace std; int a[100]; int main() { int n,i,f; while(scanf("%d",&n)) { f=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); if(a[i]==0) f=1; } if(f==0) { for(i=0;i<n-1;i++) printf("0 "); printf("0\n"); } else { for(i=0;i<n;i++) { if(a[i]==0) printf("%d ",n-4); else if(a[i]==1) printf("2 "); else if(a[i]==2||a[i]==n-4) printf("1 "); else printf("0 "); if(i==n-1) printf("\n"); } } } return 0; }