Generate 10-digit number using a phone keypad

后端 未结 12 912
遥遥无期
遥遥无期 2020-12-13 14:12

Given a phone keypad as shown below:

1 2 3
4 5 6
7 8 9
  0

How many different 10-digit numbers can be formed starting from 1? The constrain

12条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-13 14:46

    A simpler answer.

    #include
    
    int a[10] = {2,2,2,2,3,0,3,2,2,2};
    int b[10][3] = {{4,6},{6,8},{7,9},{4,8},{0,3,9},{},{1,7,0},{2,6},{1,3},{2,4}};
    
    int count(int curr,int n)
    {
        int sum = 0;
        if(n==10)
            return 1;
        else
        {
            int i = 0;
            int val = 0;
            for(i = 0; i < a[curr]; i++)
            {
                val = count(b[curr][i],n+1);
                sum += val;
            }
            return sum;
        }
    }
    
    int main()
    {
        int n = 1;
        int val = count(1,0);
        printf("%d\n",val);
    }
    

    celebrate!!

提交回复
热议问题