算法競賽入門經典題解——第三章 3-3數數字 UVa1225
阿新 • • 發佈:2018-07-23
() %d 入門 scan clu amp uva ++ tdi
我的思路是打表,但不一次性打出所有。目前已經計算出的最大n標記為max,假如一次輸入為n=13,就把n=max+1到13的結果都儲存到二維數組中。max初始為0
坑:每行輸出末尾不能有空格,但必須換行(包括最後一行輸出)
#include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.h> int s[10005][12]; int main() { memset(s,0,sizeof(s)); int T,n,max=0; scanf("%d",&T);while(T--){ scanf("%d",&n); if(s[n][0]!=0) { int j; for(j=0;j<=8;j++){ printf("%d ",s[n][j]); } printf("%d",s[n][9]); printf("\n"); } else{ int i; int j;for(i=max+1;i<=n;i++){ for(j=0;j<=9;j++){ s[i][j]=s[i-1][j]; } int k=i; while(k>0) { s[i][k%10]++; k=k/10; } } max=n;for(j=0;j<=8;j++){ printf("%d ",s[n][j]); } printf("%d",s[n][9]); printf("\n"); } } return 0; }
算法競賽入門經典題解——第三章 3-3數數字 UVa1225