九宫格算法题一道

本文介绍了一种通过编程方法寻找符合条件的特殊整数序列的方法,该序列需满足特定的数学条件,并确保序列中的数字不重复。文章展示了完整的C语言实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在某群中看到的题,于是由题意可知:


#include <stdio.h>

/*
检验是否为不重复数
是返回true 1
不是返回false 0
*/

bool test(int forward){
	char numStr[10] = {0};
	sprintf(numStr, "%d", forward);

	for(int i = 1; i <9; i++){  
        if(numStr[i] < numStr[i-1]){           
            int j = i - 1;   
            int x = numStr[i];        
            numStr[i] = numStr[i - 1];         
            while(x < numStr[j]){  
                numStr[j + 1] = numStr[j];  
                j--;      
            }  
            numStr[j + 1] = x;    
        }  

    }

    // 去重
     for(int i = 0; i < 9 ; i++){
    	if(numStr[i] == '0'){
    	return false;
    	}
    }
    for(int i = 0; i < 9 - 1; i++){
    	if(numStr[i] == numStr[i + 1]){
    	return false;
    	}
    }
    return true;
}

int main(){
		char numStr[10] = {0};
        int calcStr[9] = {0};
	int initialNumber = 123456789;
	for(int i = initialNumber;i < 1000000000; i++){
		if(test(i) == true){
			sprintf(numStr, "%d", i);
            for(int j = 0; j < 9; j++){
                calcStr[j] = numStr[j] - '0';
            }
			if( (calcStr[0] - calcStr[1]) == calcStr[2]){
                if( (int)(calcStr[3] / calcStr[4]) == calcStr[5]){
                    if( (calcStr[6] + calcStr[7]) == calcStr[8]){
                        if( (int)(calcStr[2] * calcStr[5]) == calcStr[8]){
                             printf("%s yes\n", numStr);
                        }
                    }
                }
            }
			else{
				//printf("%s no\n", numStr);
				}
			}
		}
	
	return 0;

}

结论为:

FiredomMacBookPro:desktop firedom$ ./sfdsfdsa 

954632178 yes

954632718 yes



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值