UVa 340 Master-Mind Hints (最佳化尋找&複製數組)

來源:互聯網
上載者:User

Designer, selects a secret code. The other, Breaker, tries to break it. A code is no more than a row of colored dots. At the beginning of a game, the players agree upon the length N that a code must have and upon the colors that may occur in a code.

match is a pair (i,j),  and  , such that  . Match (i,j) is called strong when i =j, and is called weak otherwise. Two matches (i,j) and (p,q) are called independent when i = p if and only if j = q. A set of matches is called independent when all of its members are pairwise independent.

M of matches for which the total number of matches and the number of strong matches are both maximal. The hint then consists of the number of strong followed by the number of weak matches in M. Note that these numbers are uniquely determined by the secret code and the guess. If the hint turns out to be (n,0), then the guess is identical to the secret code.

N (the length of the code). Following these will be the secret code, represented as N integers, which we will limit to the range 1 to 9. There will then follow an arbitrary number of guesses, each also represented as N integers, each in the range 1 to 9. Following the last guess in each game will be N zeroes; these zeroes are not to be considered as a guess.

N. The last game in the input will be followed by a single zero (when a value for N would normally be specified). The maximum value for N will be 1000.

exact format.

41 3 5 51 1 2 34 3 3 56 5 5 16 1 3 51 3 5 50 0 0 0101 2 2 2 4 5 6 6 6 91 2 3 4 5 6 7 8 9 11 1 2 2 3 3 4 4 5 51 2 1 3 1 5 1 6 1 91 2 2 5 5 5 6 6 6 70 0 0 0 0 0 0 0 0 00

Game 1:    (1,1)    (2,0)    (1,2)    (1,2)    (4,0)Game 2:    (2,4)    (3,2)    (5,0)    (7,0)

i,j) is called strong when i =j, and is called weak otherwise.

i,j) and (p,q) are called independent when i = p if and only if j = q. A set of matches is called independent when all of its members are pairwise independent.

M of matches for which the total number of matches and the number of strong matches are both maximal.

M.

相同列相同數位統計一遍,然後相同列相同數字對應的個數減一。

統計1~9在兩序列中出現的個數,每個數字加其再兩個序列中出現個數的較小值,詳見代碼。

/*0.019s*/#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int s[1005], g[1005];int a[15], b[15], c[15];int main(void){int cas = 0, n;while (scanf("%d", &n), n){memset(c, 0, sizeof(c));for (int i = 0; i < n; i++){scanf("%d", &s[i]);c[s[i]]++;}printf("Game %d:\n", ++cas);while (true){memcpy(a, c, sizeof(c));// 技巧:用memcpy將c[]中統計的1-9的數的個數賦給a[]memset(b, 0, sizeof(b));for (int i = 0; i < n; i++){scanf("%d", &g[i]);b[g[i]]++;}if (!g[0]) break;int x = 0, y = 0;for (int i = 0; i < n; i++)if (s[i] == g[i]){a[s[i]]--;b[s[i]]--;x++;}for (int i = 1; i <= 9; i++)y += min(a[i], b[i]);printf("    (%d,%d)\n", x, y);}}return 0;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.