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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5131 | 回復(fù): 9
打印 上一主題 下一主題

[C] 不知道free怎么寫 [復(fù)制鏈接]

論壇徽章:
6
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2018-02-11 20:52 |只看該作者 |倒序?yàn)g覽
N元一次不定方程整數(shù)解的 free



5a+10b+25c+50d=200   

這里系數(shù)由大到小排列: 5 < 10 < 25 < 50
a, b, c, d ... 都是整數(shù) >= 0

// 代碼可以省略解析字符串  "5a+10b+25c+50d=200" 過(guò)程
unsigned coe[] = {5, 10, 25, 50};
unsigned sum = 200;
   


非常感謝, 不知道destroy怎么寫?

代碼:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct Node {
  4.     unsigned ans;
  5.     struct Node *branch;
  6.     struct Node *node;
  7. } Node;

  8. typedef struct {
  9.     unsigned sum;
  10.     Node *node;
  11. } Table;

  12. Table *TAB;
  13. unsigned SUM;
  14. unsigned CALL;

  15. unsigned gcd(unsigned, unsigned);
  16. void calculate(unsigned *, unsigned, unsigned);
  17. Table calUtil(unsigned *, unsigned, unsigned, unsigned *);
  18. void print(Node *, unsigned, unsigned *, unsigned);
  19. void destroy(Node *);

  20. int main() {
  21.     //unsigned coefficient[] = { 25, 56, 124, 345, 512 };
  22.     //unsigned sum   = 23456;
  23.    
  24.     // 5a+10b+25c+50d=200   5 < 10 < 25 < 50
  25.     unsigned coefficient[] = {5, 10, 25, 50};
  26.     unsigned sum = 200;
  27.     unsigned num = sizeof(coefficient) / sizeof(unsigned);

  28.     calculate(coefficient, num, sum);
  29. }

  30. unsigned gcd(unsigned m, unsigned n) { return n ? gcd(n, m % n) : m; }

  31. void destroy(Node *no) {
  32.     /* HOW TO DESTROY? */
  33. }

  34. void calculate(unsigned *coefficient, unsigned num, unsigned sum) {
  35.     CALL = 0;
  36.     SUM = sum;
  37.     unsigned Gcd[num];
  38.     Gcd[0] = coefficient[0];
  39.     for (unsigned i = 1; i < num - 1; i++)
  40.         Gcd[i] = gcd(coefficient[i], Gcd[i - 1]);

  41.     TAB = calloc(num * (SUM + 1), sizeof(Table));
  42.     Table ret = calUtil(coefficient, num - 1, sum, Gcd);

  43.     unsigned answer[num];
  44.     printf("SUM = %u\nCOE = ", sum);
  45.     for (int i = 0; i < num; i++) {
  46.         printf("%d ", coefficient[i]);
  47.     }
  48.     printf("\n");

  49.     print(ret.node, num - 1, answer, num);
  50.     printf("COUNT = %u\n", ret.sum);
  51.     printf("CALL  = %u\n", CALL);
  52.    
  53.     // HOW TO DESTROY??
  54.     //destroy (ret.node);
  55.     //free (TAB);

  56. }

  57. void print(
  58.     Node *no,
  59.     unsigned index,
  60.     unsigned *ans,
  61.     unsigned num) {
  62.    
  63.     if (!no) {
  64.         for (unsigned i = 0; i < num; i++)
  65.             printf("%u ", ans[i]);
  66.         printf("\n");
  67.     }
  68.    
  69.     while (no) {
  70.         ans[index] = no->ans;
  71.         print(no->branch, index - 1, ans, num);
  72.         no = no->node;
  73.     }
  74. }

  75. Table calUtil(
  76.     unsigned *coefficient,
  77.     unsigned index,
  78.     unsigned sum,
  79.     unsigned *Gcd) {
  80.    
  81.     CALL++;
  82.     Table(*tab)[SUM + 1] = (Table(*)[SUM + 1]) TAB;

  83.     if (!index) {
  84.         Node *n = calloc(1, sizeof(Node));
  85.         n->ans = sum / coefficient[index];
  86.         return tab[index][sum] = (Table){1, n};
  87.     }

  88.     Table this = {0};
  89.     unsigned newSum = sum;
  90.     unsigned max = sum / coefficient[index];

  91.     for (unsigned value = 0; value <= max; value++) {
  92.         /* HAS SOLUTION */
  93.         if (newSum % Gcd[index - 1] == 0) {
  94.             Table branch = tab[index - 1][newSum].node
  95.                 ? tab[index - 1][newSum]
  96.                 : calUtil(coefficient, index - 1, newSum, Gcd);

  97.             if (branch.sum) {
  98.                 this.sum += branch.sum;
  99.                 Node *node = malloc(sizeof(Node));
  100.                 *node = (Node){value, branch.node, this.node};
  101.                 this.node = node;
  102.             }
  103.         }
  104.         newSum -= coefficient[index];
  105.     }
  106.     return tab[index][sum] = this;
  107. }


復(fù)制代碼


論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [報(bào)告]
發(fā)表于 2018-02-12 20:20 |只看該作者
回復(fù) 1# dorodaloo

They are the same issue

5a+10b+25c+50d=200

-------------------------------------


http://72891.cn/forum.p ... mp;fromuid=24785593

int coin[] = { 1, 2, 5, 10, 20, 25, 50 };

   {1,2,5,10} x5
={5,10,25,50}

論壇徽章:
6
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
3 [報(bào)告]
發(fā)表于 2018-02-13 17:11 |只看該作者
回復(fù) 2# jason680
感謝回復(fù)

這是用眼睛解題啊

如用戶輸入?
3a+5b+23c=556

或者是
unsigned coefficient[] = { 25, 56, 124, 345, 512 };
unsigned sum   = 23456;

這一帖.的問(wèn)題是
如何寫destory函數(shù)






論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [報(bào)告]
發(fā)表于 2018-02-13 21:49 |只看該作者
回復(fù) 3# dorodaloo

http://72891.cn/forum.p ... mp;fromuid=24785593

$ echo 23 5 3 556 | awk -f get_sol.awk
23   5   3 556
--------------
0   2 182
0   5 177
0   8 172
0  11 167
...
22  10   0
23   0   9
23   3   4
Call count=499
Ans  count=473

論壇徽章:
6
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
5 [報(bào)告]
發(fā)表于 2018-02-14 19:15 |只看該作者
回復(fù) 4# jason680


感謝回復(fù)

echo 23 5 3 556 | awk -f get_sol.awk
Call count=499
Ans  count=473


1樓
COUNT = 473
CALL  = 197


論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [報(bào)告]
發(fā)表于 2018-02-24 22:14 |只看該作者
回復(fù) 5# dorodaloo

$ echo 23 5 3 556 | awk -f get_sol.awk | grep count
Call count=499
Ans  count=473

$ echo 23 5 3 556 | awk -f get_sol1.awk | grep count
Call count=26
Ans  count=473

$ echo 23 5 3 556 | awk -f get_sol2.awk | grep count
Call count=26
Ans  count=473

$ echo 23 5 3 556 | awk -f get_sol3.awk | grep count
Call count=26
Ans  count=473

$ echo 50 25 10 5 2000 | awk -f get_sol.awk | grep count
Call count=115744
Ans  count=114021

$ echo 50 25 10 5 2000 | awk -f get_sol1.awk | grep count
Call count=1723
Ans  count=114021

$ echo 50 25 10 5 2000 | awk -f get_sol2.awk | grep count
Call count=123
Ans  count=114021

$ echo 50 25 10 5 2000 | awk -f get_sol3.awk | grep count
Call count=123
Ans  count=114021

$ echo 512 345 124  56  25 23456 | awk -f get_sol.awk | grep count
Call count=555841
Ans  count=449699

$ echo 512 345 124  56  25 23456 | awk -f get_sol1.awk | grep count
Call count=106142
Ans  count=449699

$ echo 512 345 124  56  25 23456 | awk -f get_sol2.awk | grep count
Call count=101302
Ans  count=449699

$ echo 512 345 124  56  25 23456 | awk -f get_sol3.awk | grep count
Call count=16984
Ans  count=449699

論壇徽章:
6
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
7 [報(bào)告]
發(fā)表于 2018-02-25 10:01 |只看該作者
回復(fù) 6# jason680

感謝回復(fù)
Call count=26

贊一個(gè)

大神,求代碼

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
8 [報(bào)告]
發(fā)表于 2018-02-28 09:13 |只看該作者
回復(fù) 7# dorodaloo

想法與算法...
get_solX.awk與get_coin_cycX.c想法也差不多
屬同一個(gè)問(wèn)題
遞歸調(diào)用,可得知答案(值)時(shí)返回

以圖23A+5B+3C=556為例
get_sol.awk算法

$ echo 23 5 3 556 | awk -f get_sol.awk  
23   5   3 556
--------------
0   2 182
0   5 177
0   8 172
0  11 167
0  14 162
...
22   7   5
22  10   0
23   0   9
23   3   4
Call count=499
Ans  count=473


算法提高 get_sol1.awk算法

0   2 182   
0   5 177
0   8 172
...
0 110   2

算法提高,
0 2 x
...
0 110 x
若能在t = 1時(shí),就可知所有答案(值),則不須再遞歸調(diào)用
0 n0 x0
0 n1 x1
0 n2 x2
...
0 nn xn

23   5   3 556
--------------
0   2   x   ==>找23*0 所有答案

sum
= 556 - 23*0 - 5*2 = 546

n = 取整( 546 / (5 * 3 / gcd(5,3)) )  
由0到n, n值再加1

int(546/15)+1 ==>37


23   5   3 556
--------------
1   1 176 ==>找23*1 所有答案

sum
= 556 - 23*1 - 5*1 = 528

int(528/15)+1 ==>36


-------------------------------------------------------
  for (n=0; n<cyc; n+=1) {
    nm = m - n * a[t];
    if(ck(nm,b[t-1])){
      v[t] = n;
      if(t==1){
        return(int(nm/(a[1]*a[0]/b[1]))+1)
      }


=======================================

算法提高 get_sol2.awk算法
t=2, sum=546, 遞歸調(diào)用 得37
t=2, sum=528, 遞歸調(diào)用 得36
...

下次再有t=2, sum=546, 不須再遞歸調(diào)用,直接得37

優(yōu)點(diǎn): 不須重復(fù)遞歸調(diào)用
缺點(diǎn): 須紀(jì)錄復(fù)遞歸調(diào)用結(jié)果

$ diff get_sol1.awk get_sol2.awk
82,88c82,91
<       #if(t==2&& t"-"nm in c){
<       #  cnt += c[t"-"nm];
<       #  contine;
<       #}
<       x= sol(a, t, nm);
<       if(t==2) c[t"-"nm]=x;
<       cnt += x;
---
>       if(t==2 && (t"-"nm in c)){   #下次再有t=2, sum=546, 不須再遞歸調(diào)用,直接得37
>         #print "get",t,nm,c[t"-"nm];
>         cnt += c[t"-"nm];
>         continue;
>       }
>       xc= sol(a, t, nm);
>       if(t==2){ c[t"-"nm]=xc;  #須紀(jì)錄復(fù)遞歸調(diào)用結(jié)果
>         #print t,nm,c[t"-"nm];
>       }
>       cnt += xc;



=======================================

算法提高 get_sol3.awk算法(與get_sol2.awk算法一樣, t=3)
t=3, sum=x1, 遞歸調(diào)用 得N1
t=3, sum=x2, 遞歸調(diào)用 得N2
...

下次再有t=3, sum=x1, 不須再遞歸調(diào)用,直接得N1

優(yōu)點(diǎn): 不須重復(fù)遞歸調(diào)用
缺點(diǎn): 須紀(jì)錄復(fù)遞歸調(diào)用結(jié)果

論壇徽章:
6
數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
9 [報(bào)告]
發(fā)表于 2018-02-28 15:32 |只看該作者
回復(fù) 6# jason680

看不到帖子
發(fā)一帖究竟要審核多久

論壇徽章:
154
2022北京冬奧會(huì)紀(jì)念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16賽季CBA聯(lián)賽之深圳
日期:2022-11-02 14:02:4515-16賽季CBA聯(lián)賽之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16賽季CBA聯(lián)賽之八一
日期:2023-11-04 19:23:5115-16賽季CBA聯(lián)賽之廣夏
日期:2023-12-13 18:09:34
10 [報(bào)告]
發(fā)表于 2018-02-28 16:13 來(lái)自手機(jī) |只看該作者
shell處理數(shù)值,感覺(jué)很快很強(qiáng)大
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP