求编写C语言或者JAVA程序

发布网友 发布时间:2022-04-23 12:55

我来回答

5个回答

热心网友 时间:2023-05-21 14:37

一刷新这么多答案了,看了下他们的代码顿时无地自容了。。既然写好了我还是贴下。。

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 2014/12/22.
 */
public class Test {
    private static String generate() {
        Map<Integer, String> map = new HashMap<>(4);
        map.put(1, "A");
        map.put(2, "B");
        map.put(3, "C");
        map.put(4, "D");
        one:
        while (true) {
            StringBuffer sb = new StringBuffer();
            Map<Integer, Integer> map2 = new HashMap<>(4);
            for (int i = 0; i < 20; i++) {
                int a = (int) (Math.random() * 10) % 4 + 1;
                if (map2.get(a) != null) {
                    map2.put(a, map2.get(a) + 1);
                } else {
                    map2.put(a, 1);
                }
                if (map2.get(a) > 6) {
                    continue one;
                }
                sb.append(map.get(a));
            }
            for (Integer i: map2.keySet()) {
                if (map2.get(i) < 3) {
                    continue one;
                }
            }
            for (int i = 0; i < 17; i++) {
                String string = sb.toString().substring(i, i + 3);
                String a = string.substring(0, 1);
                String b = string.substring(1, 2);
                String c = string.substring(2, 3);
                if (a.equals(b) && b.equals(c)) {
                    continue one;
                }
            }
            String a5 = sb.toString().substring(4, 5);
            String a6 = sb.toString().substring(5, 6);
            if (a5.equals(a6)) {
                continue one;
            }
            String a10 = sb.toString().substring(9, 10);
            String a11 = sb.toString().substring(10, 11);
            if (a10.equals(a11)) {
                continue one;
            }
            String a15 = sb.toString().substring(14, 15);
            String a16 = sb.toString().substring(15, 16);
            if (a15.equals(a16)) {
                continue one;
            }
            String sb1 = sb.toString().substring(0,5);
            if (!verif(sb1)) {
                continue one;
            }
            String sb2 = sb.toString().substring(5,10);
            if (!verif(sb2)) {
                continue one;
            }
            String sb3 = sb.toString().substring(10,15);
            if (!verif(sb3)) {
                continue one;
            }
            String sb4 = sb.toString().substring(15,20);
            if (!verif(sb4)) {
                continue one;
            }
            return sb.toString();
        }

    }

    private static boolean verif(String x) {
      Map<String,Integer> map = new HashMap<>();
        for (int i=0;i<5;i++) {
            String tmp = x.substring(i,i+1);
            if (map.get(tmp) == null) {
                map.put(tmp,1);
            }else {
                map.put(tmp,map.get(tmp) + 1);
            }
        }
        if (map.keySet().size() < 3) {
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(generate());
    }
}

热心网友 时间:2023-05-21 14:37

package caikai;

import java.util.Arrays;
import java.util.Random;

public class Ran {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[20];
boolean h = true;
do {
boolean j = true;
do {
for (int i = 0; i < arr.length; i++) {
int number = random.nextInt(4) + 1;
arr[i] = number;
}
int a = 0, b = 0, c = 0, d = 0;
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case 1:
a++;
break;
case 2:
b++;
break;
case 3:
c++;
break;
case 4:
d++;
break;
}
}
if (a < 4 || a > 6 || b < 4 || b > 6 || c < 4 || c > 6 || d < 4
|| d > 6) {
j = false;
}
for (int k = 0; k < arr.length - 2; k++) {

if (arr[k] == arr[k + 1] && arr[k + 1] == arr[k + 2]) {
j = false;
break;
}
}
if (arr[4] == arr[5] || arr[9] == arr[10] || arr[14] == arr[15]) {
j = false;
}
for (int i1 = 0; i1 < 4; i1++) {
int a1 = 0, b1 = 0, c1 = 0, d1 = 0;
for (int i = i1 * 5; i <= 5 * (i1 + 1)-1; i++) {
switch (arr[i]) {
case 1:
a1++;
break;
case 2:
b1++;
break;
case 3:
c1++;
break;
case 4:
d1++;
break;
}
}
if (a1 > 3 || b1 > 3 || c1 > 3 || d1 > 3
|| a1 + b1 + c1 + d1 != 5) {
j = false;
}
}
if (j == true) {
System.out.println(Arrays.toString(arr));
j = false;
h = false;
break;
}
} while (j);
} while (h);
}
}

(输出的是一个数组,按照1=a,2=b,3=c,4=d自己把数字改成字母.)

热心网友 时间:2023-05-21 14:38

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include<time.h>
int main ()
{
char str[21]={0};
int  cnt[4]={0};
int  loop=0;
int  num;
int  flag=0;
int  five[4]={0};
int  loop1, time1=0;
char c;
srand((int)time(0));
while(loop<20)
{
num = rand()%4; //获得一个0-3的随机数
if(cnt[num]>=6)
{
continue;
}
if(flag>=2 && cnt[num]>=4)  //出现两个6的话,后面必须是两个4
{
continue;
}
c = num + 65;   //变成大写字母
if(loop >= 2)
{
if(c == str[loop-1] && c == str[loop-2])  //三个连续字符相同
{
continue;
}
}
if(loop == 5 || loop == 10 || loop == 15)
{
if(c == str[loop-1]) //和前一个相同
{
continue;
}
}
if(loop%5==4)
{
for(loop1=0;loop1<4;loop1++)
{
if(five[loop1] != 0)
{
time1++;
}
}
}
if(time1<3)
{
if(five[num]!=0)
{
continue;
}
}
cnt[num]++;   //字符出现次数自增
five[num]++;
if(cnt[num] == 6) //出现6次的字符个数
{
flag++;
}
str[loop] = c;
loop++;
if(loop%5==0)
{
five[0] = 0;
five[1] = 0;
five[2] = 0;
five[3] = 0;
}
}
printf("%s\n", str);
return 0;
}

热心网友 时间:2023-05-21 14:39

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void main()
{
srand(time(NULL));

char x[4] = {'A','B','C','D'};
char buffer[20];
int i,c[4];
while(1)
{
//1
for(i=0;i<20;++i)
buffer[i] = x[(int)(((double)rand()/RAND_MAX)*4)];

//4
if(buffer[4] == buffer[5] || buffer[9] == buffer[10] || buffer[14] == buffer[15])
continue;

//2
c[0] = c[1] = c[2] = c[3] = 0;
for(i=0;i<20;++i)
++c[buffer[i]-'A'];
if(c[0] > 6 || c[1] > 6 || c[2] > 6 || c[3] > 6)
continue;
if(c[0] < 4 || c[1] < 4 || c[2] < 4 || c[3] < 4)
continue;

//3
for(i=2;i<20;++i)
{
if(buffer[i] == buffer[i-1] && buffer[i] == buffer[i-2])
break;
}
if(i<20)
continue;

//5
c[0] = c[1] = c[2] = c[3] = 0;
for(i=0;i<5;++i)
++c[buffer[i]-'A'];
if(c[0]*c[1]==0 && c[2]*c[3]==0 || c[0]*c[2]==0 && c[1]*c[3]==0)
continue;
c[0] = c[1] = c[2] = c[3] = 0;
for(i=6;i<10;++i)
++c[buffer[i]-'A'];
if(c[0]*c[1]==0 && c[2]*c[3]==0 || c[0]*c[2]==0 && c[1]*c[3]==0)
continue;
c[0] = c[1] = c[2] = c[3] = 0;
for(i=10;i<15;++i)
++c[buffer[i]-'A'];
if(c[0]*c[1]==0 && c[2]*c[3]==0 || c[0]*c[2]==0 && c[1]*c[3]==0)
continue;
c[0] = c[1] = c[2] = c[3] = 0;
for(i=15;i<20;++i)
++c[buffer[i]-'A'];
if(c[0]*c[1]==0 && c[2]*c[3]==0 || c[0]*c[2]==0 && c[1]*c[3]==0)
continue;

break;
}

printf("%20.20s\n",buffer);
}

热心网友 时间:2023-05-21 14:39

条件这么多,这100分得死多少脑细胞才赚的到啊。。。。没人答了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com