POJ2246-Matrix Chain Multiplication

淡淡的烟草味﹌ 2021-11-26 13:18 275阅读 0赞

http://poj.org/problem?id=2246

矩阵相乘,不明白方法的同学去看一下线性代数~~~

  1. #include<stdio.h>
  2. typedef struct
  3. {
  4. int mults,rows,cols;
  5. }triple;
  6. int rows[256],cols[256],p;
  7. char e[100],error;
  8. triple expression()
  9. {
  10. triple t,t1,t2;
  11. if(e[p]=='(')
  12. {
  13. p++;
  14. t1=expression();
  15. t2=expression();
  16. p++;
  17. if(t1.cols!=t2.rows)
  18. error=1;
  19. t.rows=t1.rows;
  20. t.cols=t2.cols;
  21. t.mults=t1.mults+t2.mults+t1.rows*t1.cols*t2.cols;
  22. }
  23. else
  24. {
  25. t.rows=rows[e[p]];
  26. t.cols=cols[e[p]];
  27. t.mults=0;
  28. p++;
  29. }
  30. return t;
  31. }
  32. int main(void)
  33. {
  34. char c;
  35. int i,n,ro,co;
  36. triple t;
  37. scanf("%d%c",&n,&c);
  38. for(i=0;i<n;i++)
  39. {
  40. scanf("%c %d %d",&c,&ro,&co);
  41. getchar();
  42. rows[c]=ro;
  43. cols[c]=co;
  44. }
  45. while(gets(e)!=NULL)
  46. {
  47. p=error=0;
  48. t=expression();
  49. if(error)
  50. printf("error\n");
  51. else
  52. printf("%d\n",t.mults);
  53. }
  54. return 0;
  55. }

转载于:https://www.cnblogs.com/YogurtShen/archive/2012/08/28/2661006.html

发表评论

表情:
评论列表 (有 0 条评论,275人围观)

还没有评论,来说两句吧...

相关阅读