组合数字 拉屎绝句阿勒泰 !!

从1到9选择两个不相同数字组成一个两位数n大于等于12,小于98。输入n能组成多少个数

#include <iostream>

using namespace std;

int main() {
    int count = 0;
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            if (i != j && (i * 10 + j >= 12 && i * 10 + j <= 98)) {
                count++;
            }
        }
    }
    cout << "能组成 " << count << " 个数" << endl;
    return 0;
}


这个程序中的时间复杂度为$O(n^2)$,其中n是数字的数量。在这种情况下,n为9,因此总共需要进行81次迭代

以下答案引用自CHATGPT
这道题目需要统计两个不相同数字能够组成的不同数字的个数。可以通过两个嵌套循环的方式来实现,外层循环从1到9枚举第一个数字,内层循环从1到9枚举第二个数字,需要排除第一个数字和第二个数字相等的情况。

然后可以将两个数字组成的两位数n转换为字符串形式,判断n是否大于等于12且小于98,如果满足条件则累加计数器。最后输出计数器的值即可。

以下是代码示例:

c++Copy code#include <iostream>
#include <string>

using namespace std;

int main() {
    int count = 0;
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            if (i != j) {
                string n = to_string(i * 10 + j);
                if (n >= "12" && n <= "98") {
                    count++;
                }
            }
        }
    }
    cout << count << endl;
    return 0;
}

输出结果为:

txtCopy code
72

因此,能够组成72个不同的两位数。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7436606
  • 你也可以参考下这篇文章:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
  • 除此之外, 这篇博客: 数据结构笔记12:在含n个整数的数组中找未出现的最小正整数中的 代码实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include"head.h";
    
    //快速排序(从小到大)
    void quickSort(int s[], int l, int r)
    {
    	if (l < r)
    	{
    		int i = l, j = r, x = s[l];
    		while (i < j)
    		{
    			while (i < j && s[j] >= x) // 从右向左找第一个小于x的数
    				j--;
    			if (i < j)
    				s[i++] = s[j];
    			while (i < j && s[i] < x) // 从左向右找第一个大于等于x的数
    				i++;
    			if (i < j)
    				s[j--] = s[i];
    		}
    		s[i] = x;
    		quickSort(s, l, i - 1); // 递归调用
    		quickSort(s, i + 1, r);
    	}
    }
    
    int FindMissMin2(int a[], int length) {
    	int n = 1;
    	//将原数组中大于0的数放在新数组中,在新数组中判断未出现的最小正整数。
    	//这样可以排除原数组中负数的影响
    	int b[100];
    	int i = 0, j = 0;
    	for ( ; i < length; i++) {
    		if (a[i] > 0) {
    			b[j] = a[i];
    			j++;
    		}
    	}
    	//遍历只有正整数的新数组,判断未出现的最小正整数
    	for (int i = 0; i < j; i++)
    	{
    		if (b[i]>n)
    		{
    			return n;
    		}
    		n++;
    	}
    	return n;
    }
    
    int main()
    {
    	int a[100];//初始数组长度
    	printf("请输入数组的长度:\n");
    	int length;
    	scanf_s("%d", &length);
    	printf("请输入数组元素:\n");
    	int i;
    	for (i = 0; i < length; i++)
    	{
    		scanf_s("%d", &a[i]);
    	}
    	quickSort(a, 0, length-1);
    	printf("未出现的最小正整数为:\n");
    	int min = FindMissMin2( a, length);
    	printf("%d\n", min);
    	system("pause");
    	return 0;
    }