鱼C论坛

 找回密码
 立即注册
查看: 4293|回复: 5

函数递归,C 实现. 求更好的方法.

[复制链接]
发表于 2013-3-14 12:34:04 | 显示全部楼层 |阅读模式
10鱼币
题目:有4个数字,能组成多少个互不相同无重复数字的三位数?
#include <stdio.h>
#include <stdlib.h>
void xulie(int ,int ,int ,int,int );
int main(void )
{  int n1,n2,n3,n4,n5;
   printf("输入四个不相同的数字,最后输入总数字数.\n");
   scanf("%d %d %d %d %d",&n1,&n2,&n3,&n4,&n5);
   xulie(n1,n2,n3,n4,n5);
   
    system("PAUSE");
    return 0;
    }
void xulie(int m1, int m2 ,int m3 ,int m4,int m)
{
   if(m>0)
   { int temp;
     temp=m3;
     m3=m4;
     m4=temp;
     printf("%d%d%d\n",m1,m2,m3);
     temp=m2;
     m2=m3;
     m3=temp;
      printf("%d%d%d\n",m1,m2,m3);
      temp=m1;
      m1=m2;
      m2=temp;
      printf("%d%d%d\n",m1,m2,m3);
     xulie(m1,m2,m3,m4,m-1);     
          }
   return;
}

最佳答案

查看完整内容

哦,不好意思,自己没检查,有问题。 修复代码,没有用指针,用了数组 修正代码: 运行结果:
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-14 12:34:05 | 显示全部楼层

哦,不好意思,自己没检查,有问题。
修复代码,没有用指针,用了数组

修正代码:
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <iostream>

  4. using namespace std;


  5. void main()
  6. {
  7.         //int *p = new int[4];
  8.         int nNumber[4]={0};
  9.         int nCounts = 0;

  10.         //scanf("%d%d%d%d",p,p+1,p+2,p+3);
  11.         scanf("%d%d%d%d",&nNumber[0],&nNumber[1],&nNumber[2],&nNumber[3]);
  12.         for (int i=0;i<4;i++)
  13.         {
  14.                 for (int j=0;j<4;j++)
  15.                 {
  16.                         if (i==j)
  17.                         {
  18.                                 continue;
  19.                         }
  20.                         for (int k=0;k<4;k++)
  21.                         {
  22.                                 if ((j==k) || (i==k))
  23.                                 {
  24.                                         continue;
  25.                                 }
  26.                                 nCounts ++;
  27.                                 //cout << "产生的数字:" << *(p+i) << *(p+j) << *(p+k) <<endl;
  28.                                 cout << "产生的数字:" << nNumber[i] << nNumber[j] << nNumber[k] <<endl;
  29.                         }

  30.                 }
  31.         }
  32.         cout << "产生的数字 共有 " << nCounts << " 个 " <<endl;
  33.        
  34.         //delete p;
  35.         //fflush( stdin );
  36.         flushall();
  37.         getchar();
  38. }
复制代码
运行结果:
1.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-14 14:26:23 | 显示全部楼层
实现了一个,vs2008 ,感觉还有更简单的逻辑,一时没有想到,等晚上有空再研究一下
代码:
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <iostream>

  4. using namespace std;


  5. void main()
  6. {
  7.         int *p = new int[4];
  8.         int nCounts = 0;

  9.         scanf("%d%d%d%d",p,p+1,p+2,p+3);
  10.         for (int i=0;i<4;i++)
  11.         {
  12.                 for (int j=0;j<4;j++)
  13.                 {
  14.                         if (i==j)
  15.                         {
  16.                                 continue;
  17.                         }
  18.                         for (int k=0;k<4;k++)
  19.                         {
  20.                                 if (j==k)
  21.                                 {
  22.                                         continue;
  23.                                 }
  24.                                 nCounts ++;
  25.                                 cout << "产生的数字:" << *(p+i) << *(p+j) << *(p+k) <<endl;
  26.                         }

  27.                 }
  28.         }
  29.         cout << "产生的数字 共有 " << nCounts << " 个 " <<endl;
  30.        
  31.         delete p;
  32.         //fflush( stdin );
  33.         flushall();
  34.         getchar();
  35. }
复制代码
结果:
1.bmp
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-14 15:48:29 | 显示全部楼层
小新110 发表于 2013-3-14 14:26
实现了一个,vs2008 ,感觉还有更简单的逻辑,一时没有想到,等晚上有空再研究一下
代码:
结果:

不能有重复的数字啊...  看书,还没学到指针那.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-14 15:52:32 | 显示全部楼层
小新110 发表于 2013-3-14 14:26
实现了一个,vs2008 ,感觉还有更简单的逻辑,一时没有想到,等晚上有空再研究一下
代码:
结果:

逻辑很纠结
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-14 16:14:59 | 显示全部楼层
SuperMans2013 发表于 2013-3-14 15:52
逻辑很纠结

想一下就清楚了,其实就是每位上从里面选择一个数字而已。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-5 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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