21xrx.com
2024-11-22 09:35:15 Friday
登录
文章检索 我的文章 写文章
C++代码实现输出所有山形数
2023-07-05 03:33:32 深夜i     --     --
C++ 山形数 输出

山形数,是指一个数的十进制表示中,若先从最高位向右依次比较,一直到某一位时有一个数字比它右边的数字小,后面的所有数字必须都比它右边的数字大,则该数就是一个山形数。

比如,321是一个山形数,因为3比2大,同时比1和2都大。而231就不是山形数,因为2比3小。

下面是C++代码实现输出所有山形数的方法:


#include <iostream>

#include <vector>

using namespace std;

bool check(int num) { // 检查是否是山形数

  vector<int> v;

  while(num > 0) {

    v.push_back(num % 10);

    num /= 10;

  }

  bool inc = true, dec = false;

  for(int i=1; i<v.size(); i++) {

    if(v[i] <= v[i-1]) // 不满足先增后减条件

      inc = false;

      break;

    

  }

  for(int i=v.size()-1; i>0; i--) {

    if(v[i] >= v[i-1]) // 不满足先增后减条件

      dec = false;

      break;

    

  }

  return inc && dec;

}

int main() {

  for(int i=1; i<100000; i++) { // 从1-99999遍历所有数字

    if(check(i)) // 如果是山形数

      cout << i << endl; // 输出该山形数

    

  }

  return 0;

}

代码中用到了check函数来检查一个数是否是山形数。该函数首先将数字的各位数保存在一个vector中,然后分别检查从最高位到最低位先递增再递减是否成立,即是否是山形数。

然后,在主函数中从1到99999遍历所有数字,如果是山形数就输出该数字。

运行该程序得到的结果为:


1

2

3

4

5

6

7

8

9

21

32

43

54

65

76

87

98

210

321

432

543

654

765

876

987

2109

3210

4321

5432

6543

7654

8765

9876

21098

32109

43210

54321

65432

76543

87654

98765

210987

321098

432109

543210

654321

765432

876543

987654

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复