c語言作業要求寫報告。問題:找到所有符合條件的“兩位數×兩位數﹦兩位數×三位數”,各個數位占位的數字為1-9,不含0,不能重復。
我自己雖然也寫了但是太....,然后找了人幫忙寫了,可是我看不懂演算法設計,更不會畫流程圖,求大佬指導!
#include <stdio.h>
#include <stdlib.h>
int n = 0;
int right = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m)
{
int i;
if(k > m)
{
//判斷是否滿足 aa * aa = aa* aaa a 為1-9 且不重復
int first = list[0] * 10 + list[1];
int second = list[2] * 10 + list[3];
int third = list[4] * 10 + list[5];
int forth = list[6] * 100 + list[7] * 10 + list[8];
if (first * second == third * forth) {
for(i = 0; i <= m; i++)
printf("%d ", list[i]);
printf("\n");
right++;
}
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
int k;//輸入自然數bai的個數
printf("請輸入連續自然數的個數:");
scanf("%d",&k);int *list = (int *)malloc(k);
for (int i = 0; i < k; i ++)
{
list[i] = i + 1;
}
// int list[] = {1, 2, 3, 4, 5};
perm(list, 0, k-1);
printf("total:%d\n", n);
printf("right:%d\n", right);
return 0;
}
uj5u.com熱心網友回復:
https://bbs.csdn.net/topics/396858956 去看這個貼子轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39458.html
標籤:C語言
下一篇:VC實作音樂功能
