VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2060|回复: 15

[无奖](放假回老家,没时间上网了)帮朋友一个忙

  [复制链接]
35_avatar_middle
在线会员 发表于 2010-1-20 11:17:33 | 显示全部楼层 |阅读模式
本帖最后由 catokat 于 2010-1-20 11:19 编辑

看图写代码:

[无奖](放假回老家,没时间上网了)帮朋友一个忙

用MFC写,界面是不是一样的没关系,我只要里面的程序
第一个是加加加,要三次
第二个是减减减,也是三次
第三个是加减加,

运算后,计算出十个数中符合条件的情况种数。
十个数字是在程序运行时,由用户随便输入的,不是固定的

我朋友提问的原问题链接点击进入

谢谢各位了。




上一篇:[无奖竞猜]不要运行下面的代码,猜猜看打印出的是什么图形
下一篇:Encode and Decode
35_avatar_middle
ico_lz  楼主| 发表于 2010-1-20 11:25:51 | 显示全部楼层
不知道我说得够不够仔细,我已经把这篇贴子的链接发给朋友了,他会来看的,我明天晚上十一点半的火车。呵呵,拜托论坛的各们朋友喽。

这里是我朋友提问的地方,如果我没有说清楚的话,大家可以去看看原始对话。
http://hi.baidu.com/catokat/blog ... 6c6482ba8a58226acef
81_avatar_middle
在线会员 发表于 2010-1-20 12:56:58 | 显示全部楼层
去看看。。。
81_avatar_middle
online_moderator 发表于 2010-1-20 15:11:55 | 显示全部楼层
哦,你那个第一个答案里面的27也是用户输入的是吧?然后从10个数中选择符合条件的数字,是吧?
05_avatar_middle
在线会员 发表于 2010-1-20 19:50:51 | 显示全部楼层
没错答案里面的27是用户输入的,旁边的9783就是我要找的

ps:真的很感谢catokat,要放假了还是很热心的帮我。。谢谢你![无奖](放假回老家,没时间上网了)帮朋友一个忙
81_avatar_middle
online_moderator 发表于 2010-1-21 12:59:11 | 显示全部楼层
呵呵,这个小题不难,今晚给你答案……
05_avatar_middle
在线会员 发表于 2010-1-21 18:31:28 | 显示全部楼层
回复 6# Debug


真的可以吗?期待你的回复。。。
我觉得自己好幸运可以遇到2位贵人。。呵呵
81_avatar_middle
online_moderator 发表于 2010-1-21 20:10:07 | 显示全部楼层
本帖最后由 Debug 于 2010-1-21 20:12 编辑

来了,让 ntbing11 久等啦!
主要代码如下,如果想要工程的话也给你发上来了,在附件中。
不过我给你写的是一个算法,所以没有界面,是控制台下的程序,你应该能看懂!
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;

  4. /*
  5. *
  6. *        Author CcTry.CoM - Debug
  7. *        Thanks for uses !
  8. *        2010-01-21
  9. *
  10. */

  11. #define A_A_A        1        //means +++
  12. #define A_N_A        2        //means +-+
  13. #define N_N_N        3        //means ---

  14. class CINode {
  15. public:
  16.         int a, b, c, d;
  17.         CINode();
  18.         CINode *m_pNext;
  19.         void SetABCD(int a1, int b1, int c1, int d1);
  20. };

  21. CINode::CINode()
  22. {
  23.         m_pNext = NULL;
  24. }

  25. void CINode::SetABCD(int a1, int b1, int c1, int d1)
  26. {
  27.         a = a1;
  28.         b = b1;
  29.         c = c1;
  30.         d = d1;
  31. }

  32. CINode *AllocMemory()
  33. {
  34.         CINode *p = new CINode();
  35.         return p;
  36. }

  37. void FreeMemory(CINode *pHead)
  38. {
  39.         CINode *pCurr = pHead, *pNext = NULL;
  40.         for (;pCurr;) {
  41.                 pNext = pCurr->m_pNext;
  42.                 delete pCurr;
  43.                 pCurr = pNext;
  44.         }
  45. }

  46. bool IsSameNode(CINode *Src, CINode *Dst)
  47. {
  48.         int num = 0;
  49.         bool bAOK = false, bBOK = false, bCOK = false, bDOK = false;
  50.         num = Src->a;
  51.         if (num == Dst->a || num == Dst->b || num == Dst->c || num == Dst->d) {
  52.                 bAOK = true;
  53.         }
  54.         num = Src->b;
  55.         if (num == Dst->a || num == Dst->b || num == Dst->c || num == Dst->d) {
  56.                 bBOK = true;
  57.         }
  58.         num = Src->c;
  59.         if (num == Dst->a || num == Dst->b || num == Dst->c || num == Dst->d) {
  60.                 bCOK = true;
  61.         }
  62.         num = Src->d;
  63.         if (num == Dst->a || num == Dst->b || num == Dst->c || num == Dst->d) {
  64.                 bDOK = true;
  65.         }
  66.         if (bAOK && bBOK && bCOK && bDOK) {
  67.                 return true;
  68.         }
  69.         return false;
  70. }

  71. bool IsInTheList(CINode *p, CINode *pList)
  72. {
  73.         if (!p || !pList) {
  74.                 return false;
  75.         }
  76.         CINode *pCurr = pList;
  77.         for (;pCurr;) {
  78.                 if (IsSameNode(pCurr, p)) {
  79.                         return true;
  80.                 }
  81.                 pCurr = pCurr->m_pNext;
  82.         }
  83.         return false;
  84. }

  85. CINode *GetOperationList(int num[10], int iResult, const int operators)
  86. {
  87.         int i = 0, j = 0, m = 0, n = 0;
  88.         CINode *pHead = NULL, *pPre = NULL, *pNode = NULL;
  89.        
  90.         for (i = 0; i < 10; ++i) {
  91.                 for (j = 0; j < 10; ++j) {
  92.                         if (j == i) {
  93.                                 continue;
  94.                         }
  95.                         for (m = 0; m < 10; ++m) {
  96.                                 if (m == i || m == j) {
  97.                                         continue;
  98.                                 }
  99.                                 for (n = 0; n < 10; ++n) {
  100.                                         if (n == i || n == j || n == m) {
  101.                                                 continue;
  102.                                         }
  103.                                         if ((operators == A_A_A && num[i] + num[j] + num[m] + num[n] == iResult) ||
  104.                                                 (operators == A_N_A && num[i] + num[j] - num[m] + num[n] == iResult) ||
  105.                                                 (operators == N_N_N && num[i] - num[j] - num[m] - num[n] == iResult)) {
  106.                                                 pNode = AllocMemory();
  107.                                                 pNode->SetABCD(num[i], num[j], num[m], num[n]);
  108.                                                 if (!pHead) {
  109.                                                         pHead = pPre = pNode;
  110.                                                 }else{
  111.                                                         if (IsInTheList(pNode, pHead)) {
  112.                                                                 FreeMemory(pNode);
  113.                                                         }else{
  114.                                                                 pPre->m_pNext = pNode;
  115.                                                                 pPre = pNode;
  116.                                                         }
  117.                                                 }
  118.                                                 pNode = NULL;
  119.                                         }
  120.                                 }
  121.                         }
  122.                 }
  123.         }
  124.         return pHead;
  125. }


  126. int main(int argc, char* argv[])
  127. {
  128.         int nCount = 0;
  129.         int a[10] = {2, 3, 8, 9, 6, 5, 1, 7, 10, 4};
  130.         CINode *pResult = GetOperationList(a, 20, A_A_A);
  131.         CINode *pT = pResult;
  132.         for (;pT;) {
  133.                 cout <<pT->a<<" "<<pT->b<<" "<<pT->c<<" "<<pT->d<<endl;
  134.                 pT = pT->m_pNext;
  135.                 nCount++;
  136.         }
  137.         cout <<endl<<"Total Find: "<<nCount<<endl<<endl;

  138.         FreeMemory(pResult); //Don't forgot it !
  139.         return 0;
  140. }
复制代码

CcTry.rar

3.29 KB, 下载次数: 14

评分

参与人数 1威望 +2 驿站币 +5 贡献 +3 收起 理由
56_avatar_small zhaoshengbo + 2 + 5 + 3 好人啊

查看全部评分

05_avatar_middle
在线会员 发表于 2010-1-21 20:31:08 | 显示全部楼层
回复 8# Debug


啊。。 我不懂软件的
可不可以再麻烦你弄成个软件可以直接运行的?我不懂怎么把代码变成软件。。。
81_avatar_middle
online_moderator 发表于 2010-1-22 12:37:58 | 显示全部楼层
回复 9# ntbing11

看我发的那个 CcTry.rar 的压缩包,是控制台下的一个工程,用VC6.0编译后运行就OK,你可以自己改成MFC带界面的程序!
05_avatar_middle
在线会员 发表于 2010-1-22 19:33:29 | 显示全部楼层
回复 10# Debug

不行哦。。。你可以教我怎么弄吗?还是那个网页有教程?要详细的。。。
CcTry.exe - 1 error(s), 0 warning(s)
51_avatar_middle
online_admins 发表于 2010-1-24 23:20:36 | 显示全部楼层
回复 11# ntbing11

把编译的错误信息贴上来看看!
51_avatar_middle
online_admins 发表于 2010-1-24 23:24:19 | 显示全部楼层
下载了 Debug 会员的代码,编译没问题啊!
20_avatar_middle
在线会员 发表于 2010-1-25 13:17:42 | 显示全部楼层
转成图形界面了 去别的贴看看。
05_avatar_middle
在线会员 发表于 2010-1-25 19:10:28 | 显示全部楼层
回复 13# Syc


应该是我不会所以弄不到吧。。。
39_avatar_middle
在线会员 发表于 2010-2-3 15:40:40 | 显示全部楼层
[无奖](放假回老家,没时间上网了)帮朋友一个忙真难
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-18 08:23

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表