cantor表和笨小猴(水題)

一.目的:

總結一下之前寫過的兩個有意思的題。一個是關於字符串的處理,一個考驗思維。

題目大意

1:cantor表
http://codevs.cn/problem/1083/
2:笨小猴
http://codevs.cn/problem/1053/

Cantor表的解題思路

1:一開始我想的是創建一個二維數組來存儲數據,因爲每一個數據都是他所在的行比上對應的列,而
且排列的時候它的順序是不一樣的,當列爲偶數時它是斜着由上到下的順序,而當列爲奇數時它是斜着由下到上。
2:後來由於它的輸出是個比值形式,我就感覺存儲每一個值沒有必要,因爲在計算機中它保存的是一
個整形數而不是比值形式。因爲每次斜着數對應的個數爲1,2,3,4—,這個和它的列數是一一對應的,所以由所輸入的n來確定它的列,再用一個變量來記錄他在這條斜邊上操作的次數,然後改變分子和分母就行。

代碼:

# include <stdio.h>

# define MAX 100; 
int c = 0;
int main(void)
{
    int n,i,j,k;
    scanf("%d",&n);
    double sum = 0;
    for(i = 1; i<=1000; i++)
    {
        int t = 0;//t是用來保存他在斜邊上的處理次數 
        for(j = 1; j<=i; j++)
        {
            sum+=1;
            t+=1;
            if(sum == n)//找出所對應的列值 
            {
                c = t;
                k = i;
                break;
            }
        }
    }
    if(k%2==0)
    {
        int a = 1;
        int b = k;  
        for(j = 1; j<c; j++)
        {
            a+=1;
            b-=1;
        }
        printf("%d/%d\n",a,b);
    }
    else{
        int a = k;
        int b = 1;
        for(j = 1; j<c; j++)
        {
            a-=1;
            b+=1;
        }
        printf("%d/%d\n",a,b);
    }


    return 0;
 } 

笨小猴的解題思路:

笨小猴這道題很簡單,就是找字符串中某一個字母出現最多的次數,和出現最小的次數,就這一塊有一些意思,
str[a[i]-‘a’]++;在對該數組進行排序,找出第一個大於0的次數,就是所對應最小的次數。

代碼:

# include <stdio.h>

# define MAX 100; 
int c = 0;
int main(void)
{
    int n,i,j,k;
    scanf("%d",&n);
    double sum = 0;
    for(i = 1; i<=1000; i++)
    {
        int t = 0;//t是用來保存他在斜邊上的處理次數 
        for(j = 1; j<=i; j++)
        {
            sum+=1;
            t+=1;
            if(sum == n)//找出所對應的列值 
            {
                c = t;
                k = i;
                break;
            }
        }
    }
    if(k%2==0)
    {
        int a = 1;
        int b = k;  
        for(j = 1; j<c; j++)
        {
            a+=1;
            b-=1;
        }
        printf("%d/%d\n",a,b);
    }
    else{
        int a = k;
        int b = 1;
        for(j = 1; j<c; j++)
        {
            a-=1;
            b+=1;
        }
        printf("%d/%d\n",a,b);
    }


    return 0;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章