• 5-16 求符合给定条件的整数集


    给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

    输入格式:

    输入在一行中给出A。

    输出格式:

    输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

    输入样例:

    2
    

    输出样例:

    234 235 243 245 253 254
    324 325 342 345 352 354
    423 425 432 435 452 453
    523 524 532 534 542 543
    

    解题思路:
    这道题提供两个思路:

    1. 利用 Continue 语句,及时跳出不符合条件的情况
      利用了 continue 语句,从而使得进入 for 循环经条件判断后直接跳出来进行下一次循环。
    2. 更简化的算法
      比起上面的算法,更具技巧性。上面的算法按照一般的逻辑去实现,而此算法更好地利用了 for 循环的特性。

    解题代码:

    #include<stdio.h> // 第一种算法
    
    int main ()
    {
    	int n;
    	scanf("%d", &n);
    	
    	int i, j, k;
    	int count = 0;
    	for (i=n; i<=n+3; i++) {
    		for (j=n; j<=n+3; j++) {
    			if ( j == i ) continue;
    			for (k=n; k<=n+3; k++) {
    				if ( k==i || k==j) continue;
    				printf("%d%d%d", i, j, k);
    				count ++;
    				if (count % 6 == 0) {
    					printf("
    ");
    				} else {
    					printf(" ");
    				}
    			}
    		}
    	}
    	 
    	return 0;
    }
    

    #include<stdio.h> // 第二种算法
    
    int main()
    {
    	int a,x,y,z;
    	scanf("%d", &a);
        int count = 0;
        
        for (x=a;x<a+4;x++){
    		for (y=a;y<a+4;y++){
    			for (z=a;z<a+4;z++){
    				if (x!=y && x!=z && y!=z) {					
    						printf("%d%d%d", x, y, z);
    						count++;
    					    if ( count%6==0 ) {
    					    	printf("
    ");
    					    } else {
    					    	printf(" ");
    					    }					
    				}
    					
    			}
    		}			
    	} 
        return 0; 
    }
  • 相关阅读:
    9.堆排序
    8.全排列
    37.微信跳一跳辅助开发(C语言+EasyX)
    7.图形化实现快速排序法
    codeforces 632A A. Grandma Laura and Apples(暴力)
    codeforces 633D D. Fibonacci-ish(dfs+暴力+map)
    codeforces 633B B. A Trivial Problem(数论)
    codeforces 633A A. Ebony and Ivory(暴力)
    codeforces 622B B. The Time
    codeforces 622D D. Optimal Number Permutation(找规律)
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5737219.html
Copyright © 2020-2023  润新知