m個人分成n組,要求每組最少人,如何用C語言程式設計求所有可能的解

時間 2021-08-14 14:26:24

1樓:

數學上可以用排列組合的方法,隔板法來求解,前提是人之間沒有差別,如果人數大於分組數,那麼就相當於將n-1個隔板插進m-1個人之間,解的個數用排列組合的c運算來求,比如說三個人分兩組,那麼解的個數為2x1/1=2,如果五個人分三組,那麼解的個數為5x4x3/(3x2x1)=10;

如果用程式實現,可以採用遞迴呼叫加指標,我的演算法有點麻煩,可能還有更簡單的:

#include "stdafx.h"

int m,n;

int *a;

int *ini;

void main()

void allocate(int q,int r);

while(true)

scanf("%d",&m);

scanf("%d",&n);

if(m>=n)

break;

else

printf("請重新輸入\n");

a = (int*)malloc(n*sizeof(int));

ini=a;

for(int i=0;i*(a++)=1;

a=ini;

allocate(0,n);

void allocate(int q,int r)int sum=0;

int next;

if(q>=r)

q=r-1;

a=ini;

for(int j=0;jsum=sum+*a++;

if(sum==m)

a=ini;

for(int k=0;kif(k!=(r-1))printf("%d ",*a++);

else

printf("%d\n",*a++);

return;

else

for(int i=0;i<=(m-n);i++)a=ini;

a[q]=i+1;

next=q+1;

allocate(next,r);

return;

因為用了malloc,所以標頭檔案中需要加入malloc.h,程式在vs2010下執行。

結果截圖:

三人兩組

五人三組

七人三組

這個是樓主要的答案嗎?

2樓:匿名使用者

我懂了出題人的意思:是m個人分成n個組。每組至少一個人,也可以多人,問有多少種不同的分組。

用c語言程式設計。m和n可以用輸入,螢幕輸出顯示每一種分組的狀況。我現在還沒有想出來。

3樓:油菜花零

你覺得你把問題講清楚了嗎?我是沒明白這個要求是什麼意思

c語言初學者、什麼程式設計軟體適合初學者

4樓:薩楚餘黛

1、micosoft

visual

c++,經典推薦

2、tc,學校推薦

3、dev

c++,個人推薦

4、c-free,國人自己做的

5、turbo

c3.0,新人推薦

6、ansi

cc與c++的區別:c語言是程序導向的程式語言,c++是物件導向的程式語言。

5樓:祿楊氏況辛

初學者建議學習中文版的程式設計軟體,因為英文版的什麼也看不懂。目前我一直用的是c++6.0中文企業版的,簡單易上手,c語言**,c++的**都可以編譯。

你如果想要的話,告訴我qq號,我把安裝包發給你。

6樓:元元旦旦

如果你是初學

,我還是建議你用turbo c,因為它就是一個針對c的程式設計環境.當然vc++6.0,2008之類的更通用,但是不適合初學.

因為它們本身的使用就需要你學習,而且不是特指c的.也就是說,你寫了一個正確的c檔案,但是不一定能在vc++上正確執行,因為你還要包含這樣那樣的標頭檔案.而這些在turbo c裡是內建的.

你可以選擇trubo c 3.0試試.

7樓:匿名使用者

visual studio

最通用的軟體,以後也會經常用的

6.0 2005 2008都可以

下不到全套的,c++ express版也可以

8樓:錦江學院張明建

如果你是xp系統

就給個郵箱 直接發給你(請註明需要中文的還是英文的) 根本就不用安裝 直接解壓就可以用(我用的是vc++6.0簡體版)

9樓:匿名使用者

free c++

安裝就配置好編譯器了

如果你能找到破解版,還有提示!

10樓:シ雪瘋飛

個人建議先用turbo c,這個軟體能夠很好地提示程式的錯誤之處,方便改正,等有了一定的基礎之後再用visual c++6.0,畢竟visual c++6.0的操作介面與windows很近,操作很方便

11樓:匿名使用者

dev c++

不熟悉的話,還同時能使用raptor輔助理解

12樓:匿名使用者

強烈推薦dev c++

很好很強大!

13樓:匿名使用者

用vc2005實用。

c語言程式設計哪些程式設計軟體適合初學者?

14樓:最紳士的痞子灬

初學者建議學習中文版的程式設計軟體,因為英文版的什麼也看不懂。目前我一直用的是c++6.0中文企業版的,簡單易上手,c語言**,c++的**都可以編譯。

1、micosoft visual c++,經典推薦。

2、tc,學校推薦。

3、dev c++,個人推薦。

4、c-free,國人自己做的。

5、turbo c 3.0,新人推薦。

6、ansi c。

c與c++的區別:c語言是程序導向的程式語言,c++是物件導向的程式語言。

《c語言程式設計》講述了c語言的基本概念、各種資料型別的使用技巧、程式流程控制、陣列、函式、指標以及有關程式設計的方法等內容。書評 “c語言程式設計”是計算機專業和非計算機專業的一門技術基礎課程,也是程式設計的啟蒙語言課程。

用c語言程式設計計算1!+2!+……+20!=

15樓:匿名使用者

#include

int main()

printf("1!+2!+3!+...+20!= %lf\n",s);

}c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

16樓:匿名使用者

# include

int main(void)

printf("%d",sum);

return 0;

}我把你的程式改了下,你看看你是這個意思麼?

#include

int main()

s += k;

k = 1;

}printf("1!+2!+3!+···+20!= %lf\n",s);

return 0;

17樓:匿名使用者

#include

__int64 fun(int n)

else

sum=fun(n-1)*n;

return(sum);

}int main()

printf("%i64d",x);

while(1);

}#include

__int64 fac(__int64 n)int main()

這個也可以

18樓:章樂

你是不是忘了把這語句用大括號括起來了 {k*=i;s+=k;}

19樓:夢入劉水

for()裡面是i=1不是k=1

20樓:伊誶

#include

int main()

sum += s;

}printf("1!+2!+3!+···+20!= %d\n",sum);}

c語言程式設計 10

21樓:碧海風雲

#include

#include

#define arr_len 255 /*陣列長度上限*//* 試除法判斷素數 */

/* 大於1的自然數num,若其不能被2~num^1/2(num的平方根)之間的任一自然數整除,則其為素數 */

/* num是素數返回1,否則返回0 */int isprime (int num)int main (void) ;

int len = 10;

int primesum = 0, primecnt = 0;

int i;

printf ("素數:");

for (i=0; i

程式設計c語言→_→

22樓:聽不清啊

#include

int main()

;scanf("%d%d",&m,&k);

if(m<=0||m>k||k>49)

for(i=2;i<=49;i++)

a[i]=a[i-1]+a[i-2];

for(i=m;i<=k;i++)

s+=a[i];

printf("sum=%lld\n",s);

}return 0;}

23樓:匿名使用者

幫寫作業,收費50.不然中午沒飯吃.會餓死.

c語言是函數語言程式設計語言嗎

24樓:大樂樂

c語言支援函式遞迴呼叫,支援高階函式(函式指標),支援不可變數(const關鍵字),支援模式匹配 但不是函數語言程式設計語言

25樓:匿名使用者

不是,c是指令式程式設計語言。

c語言程式設計怎樣入門

26樓:匿名使用者

一、工欲善其事,必先利其器

這裡介紹幾個學習c語言必備的裝置和書籍:

a)開發環境

例如turbo c 2.0,這個曾經佔據了dos時代開發程式的大半個江山。但是現在windows時代,用turbo c有感覺不方面,編輯程式起來很吃力,並且拖放,更沒有函式變數自動感應功能,查詢參考資料也不方便。

建議使用visual c++,這個平臺雖然體積大,但是一旦安裝好了,用起來很方便。

b)一本學習教程

現在c語言教材多如牛毛,推薦大家使用《c語言程式設計》第二版。此書很適合初學者,並且內容也很精到。

c)利用輔助學習軟體

畢竟現在是windows時代了,學習軟體多如牛毛,這裡向大家推薦一個“整合學習環境(c語言)”,裡邊的知識點總結和例程講解都非常好,有好幾千題的題庫測試環境,包括一個windows下的trubo c,初學者甚至不用裝其它的編譯器,就可以練習程式設計了。還有一個“c語言學習系統”軟體,不過感覺只是一個題庫系統,如果你覺得題做的不夠,不妨也可以試試。

二、葵花寶典

學習計算機語言最好的方法是什麼?答曰:讀程式。

沒錯,讀程式是學習c語言入門最快,也是最好的方法。我們大家都應該有個體驗——在最初學習windows系統操作或microsoft words如果操作的過程中,剛開始總是正兒八經地買來教材,結果讀來讀去卻雲裡霧裡,而當我們將教材丟在一邊,拿起滑鼠反覆地試,幾個小時就搞定。包括學習j#,c#等其他語言,在今天的windows時代,也不再提倡抱著書本逐行啃,而是學習它們的例程。

當然,對於沒有學過任何計算機語言的初學者,多少要先閱讀教程,認真體會所有概念,然後不放過這一章中提到的所有例程,仔細研讀,直到每一行都理解了,再找幾個程式設計題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經讀懂的程式。如果寫不出來,回過頭來再繼續研究例程,想想自己為什麼寫不出來,然後再去寫這段程式,反反覆覆,直到你手到擒來為止。

三、登峰造極

寫程式的最高境界其實就是掌握各種解決問題的手段(資料結構)和解決問題的方法(演算法)。

是不是寫出底層程式就是程式設計高手呢?非也,寫底層程式,無非是掌握了硬體的結構,況且硬體和硬體還不一樣,要給一個晶片寫驅動程式,無非就是掌握這塊晶片的各種暫存器及其組合,然後寫值讀值,僅此而已。這不過是熟悉一些i/o函式罷了。

那麼怎樣才算精通程式設計呢?怎樣才能精通程式設計呢?舉個例子:

你面前有10個人,找出一個叫“張三”的人,你該怎麼辦?第一種方法:直接對這10個人問:

“誰叫張三”。第2種方法:你挨個去問“你是不是張三?

”,直到問到的這個人就是張三。第三種方法:你去問一個人“你認不認識張三,指給我看”。

不要小看這個問題,你說當然會選第一種方法,那麼恭喜你答對了,因為這個方法最快,效率最高,但是在程式設計中找到解決問題的最優方法和你用的手段卻是考驗一個程式設計師程式設計水平的重要標誌,而且是不容易達到的。剛才這個問題類似於資料結構和演算法中的:map資料結構,窮舉查詢和折半查詢。

所以掌握好資料結構和一些常用演算法,是登峰造極的必然之路。

已知,m2 n 2,n2 m 2 n不等於m ,求m3 3mn n3的值

小鬼 m3 3mn n3 m2 m 3mn n2 n n 2 m 3mn m 2 n mn 2m 3mn mn 2n 2 m n mn 又因為m2 n 2,n2 m 2 相減得到 m2 n2 m n m n n 2 m 2 n m 因為n不等於m,所以n m不等於0,那麼就有m n 1再把上面兩個式...

若m的平方 m 1 0,n的平方 n 1 0,且m n,求n的5次方 n的5次方

樂正清淑寒漠 m m 1 0 n n 1 0 m n則m,n是方程x x 1 0的兩個不等根m n 1 mm 1 則m n m n 2mn 1 2 3m n m n m mn n 1x 3 1 4m 4 n 4 m n 2m n 9 2 7m 7 n 7 m n m 4 n 4 m n m n 4x...

n個座位圍成一圈,m個人去坐有幾種坐法

zzllrr小樂 這個問題其實比較難,分數太少了。詳細解答如下。m個人去坐n個座位 可以按照相鄰人數來分組,例如,9個座位,4個人坐。可以分成,4 3 1 2 2三種情況。其中,4個人相鄰坐,只有1種組合 3個人相鄰坐,另一個人被隔開,共有c 9 4 1 1 c 4 1 4種組合 2個人相鄰坐,另2...