亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5747 | 回復: 19
打印 上一主題 下一主題

[算法] 發(fā)個簡單的題目 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-04-06 18:05 |只看該作者 |倒序瀏覽
將1,2,3,4,5,6,7,8,9共9個數(shù)分成三組,組成3個三位數(shù),且使這3個三位數(shù)構(gòu)成1:2:3的比例,例如:3個三位數(shù)192,384,576滿足以上條件.192:384:576=1:2:3。試求出所有滿足條件的3個三位數(shù)。

論壇徽章:
0
2 [報告]
發(fā)表于 2009-04-06 18:17 |只看該作者

回復 #1 吳秦 的帖子

這是我自己的,大家也貼下自己的。

/*我的思路是:1~9組成的最小三位數(shù)是123,最大的是987,由于要滿足1:2:3的關(guān)系,
*最小的那個數(shù)應(yīng)該不到于987/3=329。這樣的話第一個數(shù)的變化范圍是123~329,
*將這里面的數(shù)分別乘2、乘3,然后判斷這三個數(shù)是否符合要求,即這三個數(shù)是否由1~9組成,
*而且各個數(shù)字不能相同。代碼如下:
*/


  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int judge(int n);//用于判斷整數(shù)n的各位數(shù)字是否想同,如果有想同的就返回0;否則返回1

  4. main()
  5. {
  6.         int l,m,n,p,q;
  7.         for(l=123;l<=329;l++)
  8.         {       
  9.                 m=2*l,n=3*l;
  10.                 p=l*1000+m,q=p*1000+n;
  11.                 if(judge(l)==0||judge(m)==0||judge(n)==0||judge(p)==0||judge(q)==0)
  12.                 //判斷l(xiāng)、m、n是否符合要求。如果不符合就跳出本次循環(huán),進入下次循環(huán)
  13.                         continue;
  14.                 printf("%d,%d,%d\n",l,m,n);
  15.         }
  16. }

  17. int judge(int n)
  18. {
  19.         int num[10],i,j,len=0,temp=n;
  20.         do
  21.         {
  22.                 ++len;
  23.                 temp=temp/10;
  24.         }while(temp);//求出n的位數(shù)
  25.         for(i=1;i<=len;i++)
  26.         {//將n的各位數(shù)字存入num[],并判斷是否存在0及相同的數(shù)字,如果存在就返回0
  27.                 if((num[i]=n%10)==0) return 0;
  28.                 n=n/10;               
  29.                 for(j=1;j<i;j++)
  30.                         if(num[j]==num[i]) return 0;
  31.         }
  32.         return 1;
  33. }
復制代碼

[ 本帖最后由 吳秦 于 2009-4-6 18:18 編輯 ]

論壇徽章:
0
3 [報告]
發(fā)表于 2009-04-07 09:18 |只看該作者

回復 #2 吳秦 的帖子

又用這種辦法求是幾位數(shù)??狂暈!換個辦法吧!

int judge(int n)這個函數(shù)里面,你直接判斷讀進來的數(shù)字是不是大于123 小于987就好了啊 ,之后就按照3位處理唄!還用搞什么除以10啥的嗎!想不明白!

論壇徽章:
0
4 [報告]
發(fā)表于 2009-04-07 09:26 |只看該作者
我基本沒什么思路。。
SirFang 該用戶已被刪除
5 [報告]
發(fā)表于 2009-04-07 11:58 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
6 [報告]
發(fā)表于 2009-04-07 17:21 |只看該作者
//a : 100 ~ 333
//b : 200 ~ 666

//c : 300 ~ 999

#include <stdio.h>

#define MATCH 0
#define NOT_MATCH 1

int judge(int a, int b, int c)
{
    char tmp_buf [9 +1]="\0";
    sprintf(tmp_buf, "%d%d%d", a, b, c);
   
    //如果 tmp_buf 中有相同的元素 return NOT_MATCH

    int i = 0;
    int k = 0;
    for (i = 0; i < 10; i++)
    {
        for (k = i+1; k < 10; k++)
        {
            if (tmp_buf[i] == tmp_buf[k])
            {
                return NOT_MATCH;
            }
        }
        
    }

    return MATCH;
}

int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
   
    for (a = 123; a < 333; a++)
    {
        b = a * 2;
        c = a * 3;
        
        if(judge(a, b, c) == NOT_MATCH)
        {
            continue;
        }
        else
        {
            printf("%d, %d, %d\n", a, b, c);
        };
    }

    return 0;
}


[ 本帖最后由 libin1983 于 2009-4-7 17:23 編輯 ]

論壇徽章:
0
7 [報告]
發(fā)表于 2009-04-07 17:44 |只看該作者

回復 #6 libin1983 的帖子

int judge(int a, int b, int c) {
    int digital[10] = { 0, };
    char tmp_buf [9 +1]="\0";
    sprintf(tmp_buf, "%d%d%d", a, b, c);

    for ( int i = 0; i < 9; i ++ ) {
          if ( 0 != digital[tmp_buf[i] - '0'] ) {
                   return NOT_MATCH;
          }
           digital[tmp_buf[i] - '0'] = 1;
   }
   
    return MATCH;
}


[ 本帖最后由 drowsyboy 于 2009-4-7 17:47 編輯 ]

論壇徽章:
0
8 [報告]
發(fā)表于 2009-04-07 18:57 |只看該作者
原帖由 SirFang 于 2009-4-7 11:58 發(fā)表


中間數(shù)必須是偶數(shù),否則第一個數(shù)就不是整數(shù),所以,如果以中間的數(shù)來做循環(huán)體的話,循環(huán)量會減一半。
中間數(shù)必須小于等于658,否則最后一位數(shù)會超過3位數(shù)(大于1000)。
for(int digit = 0; digit < 658; ...



跟一貼吧,每個數(shù)的規(guī)律都是可以被3整除,
所以加上“sirfang”的方法,迭代的步長可以增加到6
liaohuangen 該用戶已被刪除
9 [報告]
發(fā)表于 2009-04-07 21:22 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
10 [報告]
發(fā)表于 2009-04-07 23:15 |只看該作者

回復 #3 bladmin 的帖子

我感覺這樣更通用,不管哪個地方那個都可以這樣求一個數(shù)的位數(shù),這樣為何不好。
你要是覺得效率不高用位操作,但這個更直觀。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP