1. 程式人生 > >算法競賽入門經典題解——第三章 3-3數數字 UVa1225

算法競賽入門經典題解——第三章 3-3數數字 UVa1225

() %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